Time::Pieceを活用せよ

これまでは

perl -MTime::Piece -le '$t=localtime(); print $t'
Fri May 20 10:50:18 2011|

みたいに、UnixtimeからTime::Pieceオブジェクトつくる方法しか知らなかったけど、perldoc調べたらstrptimeで文字列パースできるじゃん!


と思ったら、timezoneで見事にハマった。strptimeだとUTCになってしまうのでlocaltimeを考慮してあげる必要がある。

perl -MTime::Piece -le '$t=Time::Piece->strptime("2011/05/20", "%Y/%m/%d"); print $t; print $t->tzoffset'
Fri May 20 00:00:00 2011
0

tzoffsetが0なので、UTCになってることが分かる。Time::PieceオブジェクトをさらにlocaltimeでラップしてあげればOK。

perl -MTime::Piece -le '$t=localtime(Time::Piece->strptime("2011/05/20", "%Y/%m/%d")); print $t; print $t->tzoffset'
Fri May 20 00:00:00 2011
32400

これでJSTになった!