Perlの場合、自前で計算したくないなら、Date::Calcを使えばいい。

>>194の回答はアホ過ぎ。timeの戻り値がシリアル値なんだから、
その性質を使わないのは勿体無い。