|
|
|
| Всем привет
У меня вот такая проблема,
$d=86400;
echo $left_time = date("H:i:s",$d);
вот такой код мне выдает
04:00:00 (на локальном компе)
19:00:00 (на первом сервере)
18:00:00 (на втором сервере)
Я вобще то ждал 24:00:00 но никак не получается, в чем ошибка?
а если доюавить секунды вот так
$d=864000000;
echo $left_time = date("H:i:s",$d);
то результат на 1 час больше покажет
05
20
19 | |
|
|
|
|
|
|
|
для: vakhtang
(08.09.2013 в 01:29)
| | Ошибка в том, что вы невнимательно читаете о функциях, если только читаете.
Функция date() принимает два аргумента, второй из которых является временной меткой. Если этот аргумент опущен, то принимается равным текущей меткой возвращенной функцией time().
Функция time() возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) до текущего времени. Значение этой точки отсчета будет равно:
<?
echo strtotime('1970-01-01 00:00:00'); //зависит от часового пояса
|
Если ваша метка некорректна, РНР дополнит ее незначащими нулями слева (а никак не справа, как вы пытаетесь далее), и если вывести полную дату, то вы сможете наблюдать следующее:
<?
echo date('Y-m-d H:i:s', 86400); //результатом будет значение полученное из суммы/разности 86400 и метки Unix
|
Разница показаний локального и серверных значений объясняется разницей часовых поясов - локальное время берется из системного времени вашего компьютера, а на сервере соответственно их системного времени, и с учетом установленной временной зоны в РНР.
Ваши 24 часа проще получить обычным делением с последующим анализом, но если так хочется, то можете напрячь и интерпретатор функцией date(). Но только учтите, что времени 24:00:00 вы не получите, так как это будет 00:00:00 и следующий день:
<?
//получаем метку времени текущего дня описанного строковой английской нотацией
echo date('Y-m-d H:i:s', strtotime('this day')).'<br>';
//то же самое, но со сбросом времени в начало
echo date('Y-m-d H:i:s', strtotime('today')).'<br>';
//текущая дата со сбросом времени в начало и добавлением 86400 секунд
echo date('Y-m-d H:i:s', strtotime('today +86400 second'));
|
Разница между двумя последними запросами времени составляет 1 день. | |
|
|
|