php4时间计算时间错误

时间:2012-02-25 05:55:39

标签: php time php4

我在php中计算时间有问题。这是一个简单的脚本:当给出一个时间(datenow)时,函数ordertime会评估:

  1. 如果是<上午10点 - >今天12:30显示
  2. 如果是< 14PM - >它显示我们无法接受订单
  3. 如果上面没有 - >它将于明天12:30显示
  4. 我的服务器上有php 4.4.9,date_default_timezone_set不起作用,所以我必须使用gmdate并计算偏移量。当我放完整个脚本时,它会在前一天输出(它使用的是不是我当前时区的servertime)。这是代码。谢谢你的帮助。

    <?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;
    }?>
    

    这给了我这个输出

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

    我已经完成了Kolink建议的所有修正。我删除了return strtotime中的第二个参数,因为它为我提供了05-08-2030 12:30:00的输出。如果我删除getdate,我在php5中有相同的输出。

1 个答案:

答案 0 :(得分:0)

尝试将$datenow作为第二个参数传递给strtotime()。这应该使“今天”或“明天”相对于正确的时间,并解决您的问题。