研究室で使ってるコードで日付処理が出てきたので、すこしメモ。
まず、
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というクラスメソッドが使える。返り値は<=>と同じ。