2016-03-29 4 views
0

У меня есть этот кодPHP gmdate возвращает время один час за

if (date_default_timezone_get()) { 
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />'; 
} 

echo 'time: ' .date('Y-m-d H:i:s'). '<br />'; 


if (ini_get('date.timezone')) { 
    echo 'date.timezone: ' . ini_get('date.timezone'). '<br />'; 
} 

echo 'time: ' .gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time()). '<br />'; 

и это выход я получаю

date_default_timezone_set: Europe/London 
time: 2016-03-29 21:26:41 
date.timezone: Europe/London 
time: 2016-03-29T20:26:41.000Z 

Так что мой php.ini установлен в Лондоне, и до сих пор является GMT один час сзади. Независимо от того, что я делаю, gmdate - это всегда одно и то же время, что неверно, потому что accourding to world clock, GMT сейчас - 19:26.

Я бегу на localhost. Мое местное время & машинное время при запуске кода было 22:26. Я попытался изменить эти часовые пояса в php.ini:

  • Азия/Кувейт - GMT + 4
  • Азия/Иерусалим - GMT + 3
  • Европа/Берлин - GMT + 1
  • Европы/Лондон - 0

ничего не помогает. Есть идеи?

UPDATE & РЕШЕНИЕ

Как указывается в комментариях, этот вопрос связан с экономией дневного света. Час на моем компьютере установлен в правильное местное время в моей стране. Тем не менее, я думаю, они изменили дату, когда время было перемещено, это было изменено около 1 недели назад, и, проверяя панель управления Windows, она ожидала этого только 1 апреля.

Единственное, что сработало для меня, - это изменить часовой пояс на моем компьютере в другой часовой пояс. Не отличное решение, и мне, вероятно, придется снова изменить на следующей неделе, но он работает на данный момент.

Чтобы изменить часовой пояс на окнах, это то, что я сделал: 1) Открытая дата и время, нажав кнопку Пуск нажмите кнопку «Панель управления», выберите «Часы», «Язык» и «Регион», а затем нажмите «Дата и время». 2) Изменить часовой пояс -> изменить часовой пояс. 3) Отрегулируйте время.

+4

летние снегом? –

ответ

0

Это выглядит правильно :)

gmdate не принимает сбережения дневного света во внимание.

То, что время на один час назад, похоже, подтверждает это.

дата функция, похоже, сама корректирует - попробуйте использовать это вместо этого.

Отъезд http://php.net/manual/en/function.gmdate.php - хотя я подозреваю, что у вас уже есть.

0

Я предполагаю из-за изменения времени? Вы можете изменить время вручную или использовать API, подобный этому: http://www.timeapi.org/.

Надеюсь, это поможет!

0

Правильное сказанное jacmoe.Сайт Greenwich Mean Time демонстрирует то же поведение, что и функции gmdate() и date().