Функция MKTime возвращает неправильное время?

StackOverflow https://stackoverflow.com/questions/1121083

  •  13-09-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы с функцией mktime.На моем рабочем сервере, если я выполню следующее:

echo '<p>' . mktime(24, 0,0, 8,29,2009) . ' - 12pm</p>';
echo '<p>' . mktime(23, 0,0, 8,29,2009) . ' - 11pm</p>';
echo '<p>' . mktime(22, 0,0, 8,29,2009) . ' - 10pm</p>';

А затем преобразуйте эти временные метки обратно в читаемый формат (используя www.unixtimestamp.com для быстрого преобразования) время смещено на один час.Первоначально я думал, что это проблема с 2400 против 0000, но это не объясняет отклонения других дат.

Есть идеи?

Это было полезно?

Решение

Часовой пояс вашего сервера отличается от ожидаемого.Временные метки Unix измеряются в секундах с 1 января 1970 г. 00:00:00. время по Гринвичу, поэтому в вашем коде есть скрытое преобразование часового пояса.Вы также можете

Другие советы

Я просто запустил следующее из командной строки и получил следующий (ожидаемый) вывод.Что произойдет, если вы запустите их?

$ php -r "echo date('H:i:s Y-m-d', mktime(24, 0, 0, 8, 29, 2009));"
00:00:00 2009-08-30

$ php -r "echo date('H:i:s Y-m-d', mktime(23, 0, 0, 8, 29, 2009));"
23:00:00 2009-08-29

$ php -r "echo date('H:i:s Y-m-d', mktime(22, 0, 0, 8, 29, 2009));"
22:00:00 2009-08-29

Моя проблема заключалась в том, что в mktime Я ввожу день и месяц с помощью ведущие нули.Затем функция вернула мне неправильные результаты.Одним из вариантов было бы удалить ведущий ноль с помощью такой функции, как

$str = ltrim($str, '0');

Источник: Как удалить все ведущие нули в строке

или

$var = (int)$var;

Источник: PHP удаляет первые нули

Я использовал одну возможность из Soulmerge:

$date = new DateTime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $seconds);
$match_time = $date->getTimestamp();

Но часовой пояс должен быть всегда установлен (либо с помощью date_default_timezone_set() или напрямую с DateTime.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top