2009-12-05

[perl] DateTime による日時処理についてのメモ

とても便利なのにまだ十分に活用されていない気がする、DateTime モジュールについて、実際に使ってみて気づいたことを書いておきます。

W3CDTF

DateTime::Format::W3CDTF は小数部を含む秒表現に対応していないので、W3CDTF のスーパーセットである ISO8601形式 に対応した DateTime::Format::ISO8601 を使う。

RSS

RSS の日時表現をパースするときは、表現が何種類かあるので、曖昧さに対応している、DateTime::Format::RSS を使う。

ミリ秒

時間精度が欲しいログを取る際などに、ミリ秒を記録したいときは、DateTime::HiRes を使って、

DateTime::HiRes->now->strftime('%Y-%m-%d %H:%M:%S.%3N')

という感じで出力する。%3N がミリ秒の部分となる。

JavaScript などで欲しくなる、ミリ秒でのUNIX epochが必要なときは、

DateTime::HiRes->now->strftime('%s%3N')

とする。

デバッグ

変な感じのときは、Data::Dumper で、内部変数を見てみる。