perl で Twitter API を操作していて、created_at の処理に困った。この日時の文字列、日本時間に変換したい。 よく見ると ANSI C asctime() のフォーマットに近い。タイムゾーンの指定があるか無いかというくらいの違い。
- "Thu Feb 3 17:03:55 1994" ← asctime()
- "Thu Feb 3 17:03:55 +0000 1994" ← created_at
これ +0000 消したら HTTP::Date
で扱える。 というわけで use HTTP::Date
してからこんな感じで。
sub conv_created { my ($timestring) = @_; $timestring =~ s/\+0000//g; my $time = str2time($timestring); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time); return sprintf("%02d%02d-%02d%02d",$mon+1,$mday,$hour,$min); }
最後の return のところは好きな形にうまいこと細工して。