とても面倒な日付・時刻計算をPerlで行うためのCPANライブラリ。
それがDate::Calc。

調べたら、なんだか直訳調っぽくて「何言ってんだか?」みたいなとこしかなかったので、
今回使った部分だけメモ。

use strict;
use Date::Calc qw(:all);   #UNIXタイムスタンプの取得
my $time = Mktime( 2009, 6, 5, 12, 42, 44);
print $time . "\n";
#今の時間を取得
my ($year,$month,$day, $hour,$min,$sec) = Today_and_Now();
print "$year年$month月$day日 $hour時$min分$sec秒\n";
#日付のみ取得 ($year,$month,$day) = Today();
#時刻のみ取得 ($hour,$min,$sec) = Now();   #2008年6月1の30日前の日付を計算
($year,$month,$day, $hour,$min,$sec) = Add_Delta_DHMS( 2008, 6, 1, 0, 0, 0, -30, 0, 0, 0);
print "$year年$month月$day日 $hour時$min分$sec秒\n";
#引数
#[0]:基準の年 [1]:基準の月 [2]:基準の日
#[3]:基準の時 [4]:基準の分 [5]:基準の秒
#[6]:何日後(前はマイナス指定)を計算するか
#[7]:何時間後(前はマイナス指定)を計算するか
#[8]:何分後(前はマイナス指定)を計算するか
#[9]:何秒後(前はマイナス指定)を計算するか
#今を基準にして10日後の3時間15分30秒前を計算
($year,$month,$day, $hour,$min,$sec) = Add_Delta_DHMS( Today_and_Now() , 10, -3, -15, -30);
print "$year年$month月$day日 $hour時$min分$sec秒\n";
#第6引数まではToday_and_Now()を使える。 #日付のみの計算 ($year,$month,$day) = Add_Delta_YM($year,$month,$day, $Dy,$Dm);
#時刻のみの計算 ($year,$month,$day) = Add_Delta_YMD($year,$month,$day, $Dy,$Dm,$Dd);
#日付のみの計算 ($year,$month,$day) = Add_Delta_YMD($year,$month,$day, $Dy,$Dm,$Dd); #時刻のみの計算 (
#日付として正しいか?(リターンは1または0)
#↓不正
print check_date( 2009, 13, 1 ) . "\n";
#↓正常
print check_date( 2009, 12, 31 ) . "\n";
#時刻として正しいか?(リターンは1または0)
#↓不正
print check_time( 26, 12, 62 ) . "\n";
#↓正常
print check_time( 23, 59, 59 ) . "\n";

よく使いそうなところはこんなもん?

【一応メモ】
競合する関数名の関数を自分で作っているときは、競合してしまうので、
use Date::Calc qw(:all);

use Date::Calc;
に変更して、関数にDate::Calc::をつけて関数実行。

【すみません】
誤りがありました。日付の増減計算はありましたが、時刻のみの増減計算はありませんでした。修正しました。