Twitter API で取れる created_at が GMT なので JST にしたい

perlTwitter 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 のところは好きな形にうまいこと細工して。