日付の解析

RSSにある更新日時を解析するのを正規表現使ってやっていましたけど、
楽な方法がないかな〜と思って調べてみた。


Cライブラリの strptimeを使えばいいみたいです。


Perlでは Time::Pieceから strptimeが使えます。


フォーマットから勝手に解析してもらえるのかなと甘いことを
考えていたら、自分でどのような形式で書かれているかを
指定する必要があるようです。

#!/usr/bin/perl
use strict;
use warnings;

use Time::Piece;

my $dc_date1 = '2009-10-31T23:40:02+09:00';
my $dc_date2 = '2009-10-31T23:40:02+JST';

my $t1 = Time::Piece->strptime($dc_date1, "%FT%T+09:00");
my $t2 = Time::Piece->strptime($dc_date2, "%FT%T+%Z");

print $t1->datetime, "\n";
print $t2->datetime, "\n";

気になったのは "+09:00"っていうところ、%zでも%Zでもうまく
いかない。manを読む限りではうまくいきそうではないのですが、
どうやって解析すればいいのだろうか? JSTのように名称であれば
%Zを使えるようです。


今のところは対象が日本だけなので問題なさそうですが、
うまい方法はないのだろうか ?