2012-02-25 5 views
0

У меня проблема с вычислением времени в php. Это простой сценарий: когда время дано (datenow), функция ordertime оценивает:ошибка времени вычисления php4 времени

  1. если < 10 утра -> он показывает сегодня в 12:30
  2. если < 14PM - > он показывает, мы не можем принять заказ
  3. и если это не ни один из выше -> отображается завтра в 12:30

у меня есть 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.

ответ

0

Попробуйте пройти $datenow в качестве второго параметра до strtotime(). Это должно сделать «сегодня» или «завтра» относительно правильного времени и исправить вашу проблему.

+0

Это исправит проблему, но функция ordertime будет бесполезной. Все дело в использовании функции – chenci

+0

Я имею в виду значения 'return' в вашей функции' ordertime'. Вот отсюда и проблема. –

+0

Он выводит это 31-12-1969 12:30:00, очень странно – chenci