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

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

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

, но когда я выполняю php-скрипт с датой эха ('Ymd H: i: s'); , я получаю другое время - поскольку php считает, что часовой пояс - UTC ( время сервера - EDT).

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

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

19
задан azv 29 August 2010 в 14:42
поделиться

3 ответа

Согласно справочной странице php.ini directives, часовой пояс не устанавливается по умолчанию, если вы используете версию до 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 является значением по умолчанию, если все это терпит неудачу, так что это, вероятно, хорошая отправная точка.

14
ответ дан 30 November 2019 в 04:58
поделиться

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

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

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

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

0
ответ дан 30 November 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: