Подтвердить что ты не робот

Получить время сервера в php-часовом поясе

на shell, время моего сервера (просто 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 script, у которого есть echo date('Y-m-d H:i:s');, я получаю другое время, поскольку php считает, что часовой пояс UTC (время сервера равно EDT).

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

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

4b9b3361

Ответ 1

В соответствии с директивой директивы 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

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

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

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

Ответ 3

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

date_default_timezone_set('GMT');
date_default_timezone_set('Europe/Zurich');
date_default_timezone_set('America/New_York');