Ошибка вычисления времени php4 - PullRequest
0 голосов
/ 25 февраля 2012

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

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

У меня php 4.4.9 на моем сервере, date_default_timezone_set не работает, поэтому я должен использовать gmdate и вычислить смещение. Когда я ставлю весь скрипт, он выводит накануне (он использует серверное время, которое не является моим текущим часовым поясом). Это код. Спасибо за любую помощь.

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

Я сделал все исправления, предложенные Колинком. Я удалил второй параметр в return strtotime, потому что он выводит мне 05-08-2030 12:30:00. И если я удаляю getdate, у меня такой же вывод в php5.

1 Ответ

0 голосов
/ 25 февраля 2012

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

...