2010-01-22

Twitter の Streaming API における日時表現の解析について

目的

DateTime が便利なので、DateTime::Format::* で、Streaming API で流れてくる、こういう表記 "Fri Jan 22 13:52:17 +0000 2010" を上手くパースしたい。
この表記方法は、古き良き時代を感じさせるC言語の ctime() に由来するものであるとのこと。日付の表記に関するノート

現状

DateTime::Format::HTTP, DateTime::Format::Mail は失敗。
ただし、+0000をUTCとかGMTに置換すればDateTime::Format::HTTPでOK
DateTime::Format::DateParse は成功。これを使うべき。
DateTime::Format::Strptime で自作しても可 (DIY派専用)

コード


use DateTime::Format::DateParse;
my $dt = DateTime::Format::DateParse->parse_datetime('Fri Jan 22 13:52:17 +0000 2010');

use DateTime::Format::Strptime;
my $formatter = DateTime::Format::Strptime->new(
    pattern => '%a %b %d %T %z %Y',
    locale => 'en_US',
);
my $dt = $formatter->parse_datetime('Fri Jan 22 13:52:17 +0000 2010');