DateTime::Format::HTTPがPDTのタイムゾーンを食えなかったでござる
スポンサードリンク
FeedBurnerに通したInDesignの勉強部屋のRSSが、自作のRSSからJavaScriptFeedに変換するスクリプトでこけていた。
調べてみたら、pubDate要素の日付のタイムゾーンがPDTとなっていた。しかしなんでいきなりなるかなー。仕様でも変わったのかなー以前の形式は覚えてないけれども。
というわけで、変換スクリプトで使っているDateTime::Format::HTTPと、以前教えてもらったDate::Parseで、比較してみた。
use strict; use warnings; use DateTime; my @date = ( 'Wed, 16 Jun 2010 07:00:00 GMT', 'Wed, 16 Jun 2010 00:00:00 PDT', ); foreach my $item ( @date ) { parse_date( $item ); print "---\n"; } exit; sub parse_date { my $date = shift; my $dt; print "input: $date\n"; use Date::Parse; print "Date::Parse "; $dt = DateTime->from_epoch( epoch => str2time($date) ); print "$dt\n"; use DateTime::Format::HTTP; print "DateTime::Format::HTTP "; $dt = DateTime::Format::HTTP->parse_datetime($date); print "$dt\n"; } __END__
$ perl test.pl input: Wed, 16 Jun 2010 07:00:00 GMT Date::Parse 2010-06-16T07:00:00 DateTime::Format::HTTP 2010-06-16T07:00:00 --- input: Wed, 16 Jun 2010 00:00:00 PDT Date::Parse 2010-06-16T07:00:00 Invalid offset: PDT DateTime::Format::HTTP $
というわけで、Date::Parseを使えばいいってことがわかりました。
なんて言ったところで、僕は日付の形式を見ただけでこれはRFCなんちゃら、とか言いあてられる日付マエストロではないので、毎回試行錯誤することになるのでした。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3255
コメントする