電子書籍の厳選無料作品が豊富!

2つの日付、時間の差分を求めるには、
timelocal を使うのかと思うのですが、

$time1 = timelocal($sec1,$min1,$hours1,$day1,$month1,$year1);
$time2 = timelocal($sec2,$min2,$hours2,$day2,$month2,$year2);

$result = int(($time2 - $time1)/(60*60*24));

return $result;

ではいけないのでしょうか?

A 回答 (3件)

経過日数を求めるのですよね。


問題ないと思います。
問題があるとすると、1970年以降の日付じゃないとだめだということですね。
Date::Calc モジュールを使うと時刻計算で楽できます。
use Date::Calc qw(Delta_Days);
#monthは、Date::Calcは、1始まり
#西暦は1から使える
$d = Delta_Days($year1,$month1,$day1, $year2,$month2,$day2);
print "$d日経過しました\n";
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やってみます。

お礼日時:2006/02/17 17:25

ちなみにtimelocalに入れる時は月は-1しないとダメです。


(1月→0 2月→1 ・・・ 12月→11)
-1しなくても1月から11月までなら問題なく動いているように見えますが、12月になると0~11の範囲外になるのでTime::Localに怒られます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
うっかり忘れてました。

お礼日時:2006/02/17 17:26

以下のサイトの「経過日数を求める」がご参考になると思います。



参考URL:http://cocohome.hp.infoseek.co.jp/cocohome/l_nis …
    • good
    • 0
この回答へのお礼

参考になるサイトをご紹介いただき、ありがとうございます。

お礼日時:2006/02/17 17:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!