получить серверное время в php - проблемы с часовыми поясами - PullRequest
19 голосов
/ 29 августа 2010

в оболочке, мое серверное время (просто date в bash): вс 29 августа 10:37:12 EDT 2010

когда я запускаю код php -r "echo date('Y-m-d H:i:s');" я получаю: 2010-08-29 10: 37: 10

, но когда я выполняю скрипт php с echo date('Y-m-d H:i:s');, я получаю другое время, так как php считает часовой пояс UTC (время сервера EDT).

Мой файл php.ini не имеет установленного часового пояса, и я не хотел бы ничего менять, так как не знаю, как это повлияет на другие сайты, работающие на этом сервере.

Есть ли простой способ получитьвремя сервера - в часовом поясе, установленном для сервера?

Ответы [ 4 ]

14 голосов
/ 29 августа 2010

Согласно справочной странице php.ini , часовой пояс не устанавливается по умолчанию, если вы используете версию до 5.3. Затем, если вы посмотрите на страницу для date_default_timezone_get, она использует следующий порядок для получения часового пояса:

* Reading the timezone set using the date_default_timezone_set() function (if any)
* Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0)
* Reading the value of the date.timezone ini option (if set)
* Querying the host operating system (if supported and allowed by the OS)

UTC является значением по умолчанию, если все они терпят неудачу, так что, вероятно, это хорошая отправная точка.

2 голосов
/ 25 сентября 2013

Поздно для вечеринки, но если вы хотите установить часовой пояс без редактирования php.ini, вы можете вставить в код php одну из следующих строк:

date_default_timezone_set('GMT');
date_default_timezone_set('Europe/Zurich');
date_default_timezone_set('America/New_York');
2 голосов
/ 29 августа 2010

Сервер должен всегда иметь часовой пояс, указанный в файле php.ini. PHP 5.3 даже выдает уведомления, если это не так, и расширение DateTime будет выдавать исключения, если вы попытаетесь построить объекты без явного указания часового пояса (с объектом DateTimezone) или с указанием часового пояса по умолчанию (либо через date.timezone, либо date_default_timezone_set).

По тому, что вы описываете, наиболее вероятные сценарии:

  • В обоих сценариях используются разные файлы php.ini. В первом случае часовой пояс по умолчанию не указан, поэтому PHP пытается вывести его из общесистемного часового пояса компьютера.
  • (Второй) скрипт вызывает date_default_timezone_set('UTC') или эквивалентный.
0 голосов
/ 29 августа 2010

Вы пытались использовать date_default_timezone_set () Американские часовые пояса можно найти здесь http://www.php.net/manual/en/timezones.america.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...