Как я могу получить текущее время Windows в скрипте PHP?
Использование time()
, похоже, не работает, потому что оно знает часовой пояс и игнорирует, действительно ли DST включено или нет на сервере. Например, если часовой пояс установлен на «Америка/Лос-Анджелес», но летнее время не отмечено (машина Windows), если сегодняшняя дата, скажем, 1 сентября, тогда время Windows может быть 13:00, но PHP time()
вернет 14:00.
Как я могу получить время Windows сервера? (используя PHP 5.2.14).
Воспроизведение проблемы
- Установите часовой пояс «America/Los_Angeles» и снимите флажок «Daylight Savings Time». Установите дату 1 сентября 2010 г., 16:00:00.
- Создайте простой PHP-скрипт со следующим, затем запустите его
echo date_default_timezone_get(), date("H:i:s", time());
Выход Америка/Лос-Анжелес 17:00:00. Обратите внимание на разницу в 1 час из-за перехода на летнее время.
time()
возвращает временную метку UNIX, не зависящую от часового пояса. Как вы определили, что он выключен на один час? - person deceze♦   schedule 05.01.2011date_default_timezone_get()
? Можете ли вы показать код? Как вы определили, чтоtime()
выключен? - person Pekka   schedule 05.01.2011date("r")
уже должно указывать местное время в соответствии с системными настройками и часовым поясом, аgmdate("r")
— это версия по Гринвичу. В противном случае это может бытьphp.ini
проблема. - person mario   schedule 05.01.2011time
другую временную метку в зависимости от того, включено ли летнее время или нет? На мой взгляд, не должно. Кроме того,date('...', time())
является избыточным, это то же самое, что иdate('...')
. Это приводит к тому, чтоtime
, вероятно, не является виновником, а преобразование в удобочитаемый формат времени черезdate
. Я не знаю, это просто придирки или это дает вам какую-то важную информацию. :) - person deceze♦   schedule 05.01.2011