2012-02-29 15 views
0

は、私はこのような2つの日付の間の日数の量を計算します。一般的に正常に動作しますが、私は2012年2月29日の 開始SDATEと2012-のHDATEを持っていたときに物事が台無しに思えるstrtotime()は02/29を処理できませんか?

    $start = strtotime($_SESSION['sdate']); 
        $end = strtotime($_SESSION['hdate']); 
        echo ($end - $start); 
        $duration = ($end - $start)/3600 /24; 
        $duration+=1; //plus one day 
        echo " The ad will show for ".$duration." day(s)<br/>"; 

04-01。私は期間を得ます の:32.9583333333 これはなぜですか?それは私の計算を台無しにしている。これを行うにはより良い方法がありますか? ありがとう! Ron

+0

夏時間... – Wrikken

+0

あなたはそれを丸めて終日にすることはできません... – Mchl

+0

あなたのサーバーのタイムゾーンが更新されていない可能性があります。それを確認します。 :) –

答えて

3

3月最後の日曜日に発生するDSTの時間変更のためだと思います。

+1

これが理由です。 '$ start = new DateTime(" 04/01 ");を使うだけで簡単に修正できます。 echo $ start-> diff(new DateTime( "02/29")) - > days; ' – Wrikken

+0

標準と夏時間との間の変更が国によって異なります。アメリカでは、3月の第2日曜日になり、2007年から続いています。ヨーロッパでは、4月の第一日曜日です。 –

-1

サーバーのタイムゾーンは更新されません。それが問題を作り出す理由です。

関連する問題