2012-02-25 10 views
0

私はPHPで時間計算に問題があります。それは簡単なスクリプトです:時間は(datenow)が与えられたとき、関数ordertimeが評価されます。php4時間計算時間エラー

  1. それは<午前10時の場合 - >それは< 14PMであれば、それは12時30
  2. で、今日表示します - それは私が私のサーバー上のPHP 4.4.9を持って12時30

で明日表示>、date_default_timezone_setは動作しません - >それは私たちが順番

  • を取ることができない、それが上記のどれもない場合に表示しますので、gmdateを使用してオフセットを計算する必要があります。私はスクリプト全体を置くと、それは前日を出力します(それは私の現在のタイムゾーンではないservertimeを使用しています)。これがコードです。 anyhelpありがとう。私がKolinkが示唆され、すべての補正を行っているしました。この出力

    OUTPUT 
    25-02-2012 03:46:22 
    24-02-2030 12:30:00 
    

    を与える

    <?php 
    $gmt = -3; 
    $datenow = gmdate("d-m-Y H:i:s", mktime(date("H")+ $gmt, date("i"), date("s"), date("m"), date("d"), date("Y"))); 
    $date = strtotime($datenow); 
    
    function ordertime ($when) 
    { 
        global $date ; 
        $datearray = strtotime($when); 
        if ($datearray['hours'] < 10) { 
         // order ships today 
         return strtotime("today 12:30"); 
        } 
        elseif ($datearray['hours'] < 14) { 
         // we can't take this order 
         echo "we can't take this order"; 
        } else { 
         // order ships tomorrow 
         return strtotime("tomorrow 12:30"); 
    } 
    } 
    // date_default_timezone_set("America/Argentina/Buenos_Aires"); // this does not work on php4.4.9 
    
    $delivery = ordertime($date); 
    if ($delivery) { 
        $deliverytime = strftime("%d-%m-%Y %H:%M:%S", $delivery); 
        echo $datenow."<br />"; 
        echo $deliverytime; 
    }?> 
    

    。私は05-08-2030 12:30:00の出力を与えるので、return strtotimeの2番目のパラメータを削除しました。私はgetdateを削除すると、私はphp5で同じ出力を持っています。

  • 答えて

    0

    strtotime()に第2パラメータとして$datenowを渡してみてください。これにより、「今日」または「明日」が正しい時刻に相対的になり、問題が解決されます。

    +0

    問題は解決しますが、注文機能は役に立たなくなります。全体のポイントは、関数 – chenci

    +0

    を 'ordertime'関数の' return'値で使用することです。それが問題の原因です。 –

    +0

    これは、31-12-1969 12:30:00、非常に奇妙な – chenci