M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2010年6月17日 21:34

DateTime::Format::HTTPがPDTのタイムゾーンを食えなかったでござる

このエントリーをはてなブックマークに追加 mixiチェック

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なんちゃら、とか言いあてられる日付マエストロではないので、毎回試行錯誤することになるのでした。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3255

コメントする