DateTimeモジュール使ってみたメモ

研究室で使ってるコードで日付処理が出てきたので、すこしメモ。

まず、

use strict;
use warnings;
use DateTime;
use DateTime::TimeZone;

my $tzhere = DateTime::TimeZone->new( name => 'Asia/Tokyo' );

として、タイムゾーンオブジェクトを事前に作って置くと、はやいらしい

現在時刻を取得するのには、

my $now = DateTime->now(time_zone => $tzhere);

とする。

時間を足したり、引いたりも出来る。この辺りのメソッドは、メッセージを受け取ってるオブジェクト自体を返すので、呼び出しのチェインが出来る。現時刻から、一時間半後のDateTimeオブジェクトを得るには、

$now->add(hour => 1)
    ->add(minutes => 30);

とかができる。

日付同士の比較にはcompareというクラスメソッドが使える。返り値は<=>と同じ。