PHP Time-Left Ошибка - PullRequest
       1

PHP Time-Left Ошибка

0 голосов
/ 01 апреля 2012

У меня проблемы с отображением оставшегося времени.

Это мой код:

echo date( "H:i:s", $show_job['deadline'] - time() );

Часовой пояс моего сервера: Европа / Амстердам

Сколько времени заносится в базу данных:

$currentTimestamp = time();
$in24hourstime = strtotime("+24 hours", $currentTimestamp);

Проблема в том, что некоторые из моих пользователей получают, например, 10 часов, а не 24 часа. Я предполагаю, что эти пользователи из разных часовых поясов. Я в Лондоне.

Что может быть причиной этой ошибки? Спасибо заранее.

1 Ответ

1 голос
/ 02 апреля 2012

Во-первых, хорошей идеей является явная установка часового пояса по умолчанию в вашем скрипте с использованием функции даты PHP, например:

date_default_timezone_set('Europe/London');

См. http://php.net/manual/en/function.date-default-timezone-set.php

Это обеспечивает использование всех вычислений датыправильный внутренний часовой пояс.При отображении даты обратно пользователю вы можете соответствующим образом настроить время в соответствии с его часовым поясом.

Небольшое изменение вашего примера позволяет создать две переменные с метками времени UNIX на данный момент и за 24 часа:

$now = time();
$in24hourstime = strtotime("+24 hours", $now);  

Чтобы вычислить разницу, мы можем вычесть одно из другого, чтобы получить разницу в секундах:

 $remaining = $in24hourstime - $now;     

В нашем примере значение $ оставшегося составляет 86400 секунд.Если бы это значение было 0 или отрицательным числом, мы можем предположить, что крайний срок прошел.

if($remaining > 0) {

    $hours = intval(intval($remaining) / 3600); 
    $minutes = intval(($remaining / 60) % 60); 
    $seconds = intval($remaining % 60); 

    echo $hours . ' hours, '.$minutes.' minutes and '.$seconds . ' seconds remaining!';

} else {

    echo "Deadline has been met. No time remaining!";
}

Кроме того, использование PHP DateTime может оказаться полезным, так как, по моему мнению, оно дает много преимуществ по сравнению со встроенным временем () и date () и более простой способ работы с часовыми поясами:

См .: http://php.net/manual/en/book.datetime.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...