DateTime::Duration

(日付・時刻の)期間オブジェクト

use DateTime::Duration;
パッケージをロードする。

my $dur = DateTime::Duration->new(years   => 3, months  => 5, weeks   => 1, days    => 1,
hours   => 6, minutes => 15, seconds => 45, nanoseconds => 12000 , end_of_month => 'limit');

期間を直接指定してインスタンスを生成する。
end_of_month:warp | limit | preserve
   warp:年・月を加減算した時に、小の月の月末をオーバーしたら次の月初を結果にする
      2009年3月31日+1ヶ月=2009年4月31日→2009年5月1日
   limit:年・月を加減算した時に、小の月の月末をオーバーしたら、月末を結果にする
      2009年3月31日+1ヶ月=2009年4月31日→2009年4月30日
   preserve:年・月を加減算した時に、元の日付が月末なら、加減算結果の月末を結果にする
      2009年4月30日+1ヶ月=2009年5月30日→2009年5月31日
日・週・時刻を加減算した場合は、このモードとは無関係に翌月に繰り上がる。

my $newdur = $dur->clone();
$durが保持する期間と同一の期間を保持する新しいインスタンスを生成する。

その他、単位換算、durationオブジェクト同士の加算・減算、乗算などがあるが、月←→日の変換が一定しない為、ほとんど役に立つとは思えない。DateTimeオブジェクトと演算するのが主な目的と考えた方がよい。