Получение Windows Time в PHP - PullRequest
       5

Получение Windows Time в PHP

1 голос
/ 05 января 2011

Как узнать текущее время Windows в PHP-скрипте?

Использование time(), похоже, не работает, поскольку учитывает часовой пояс и игнорирует, включен ли DST на сервере или нет на сервере.,Например, если для часового пояса установлено значение «America / Los_Angeles», но DST не проверен (машина Windows), если сегодняшняя дата, скажем, 1 сентября, то время окон может быть 13:00, а PHP time() вернет 14:00.

Как узнать время Windows на сервере?(с использованием PHP 5.2.14).

Воспроизведение проблемы

  • Установите часовой пояс на «America / Los_Angeles» и снимите флажок «Летнее время».Установите дату 1 сентября 2010 г. в 16:00:00.
  • Создайте простой сценарий PHP со следующим, затем запустите его

echo date_default_timezone_get(), date("H:i:s", time());

Выходные данные America / Los_Angeles 17:00:00.Обратите внимание на разницу в 1 час из-за летнего времени.

Ответы [ 2 ]

2 голосов
/ 05 января 2011

Я думаю, что PHP не учитывает настройки Windows DST.Часовые пояса интерпретируются в соответствии с определенным стандартом.Также в соответствии с прошлым разом это произошло: Летнее время не корректно даже после установки часового пояса

Но посмотрите http://php.net/manual/en/function.date-default-timezone-set.php
Есть некоторый пример кода, использующего WShell для запроса реестра Winдля фактических значений, включая флаг DST.Затем, используя timezone_abbreviations_list(), вы можете найти псевдоним с правильным именем часового пояса и флагом DST, установите его.

Также у @Pekka был другой ручной обход: php date () на час раньше времени сервера(Проблема летнего времени) (он просто не всем рассказывает.)

2 голосов
/ 05 января 2011

date("Z") дает локальное смещение со знаком от gmt в секундах. затем вы можете добавить это к выводу даты. см. справочную страницу функции date

если вы не доверяете этим настройкам, вы также можете выполнить команду date, используя shell_exec и проанализировать вывод

...