Получить время сервера в 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 нет набора часового пояса, и я бы не хотел ничего менять - поскольку я понятия не имею, какое влияние он повлияет на другие сайты, которые запускаются на этом сервере.
Есть ли простой способ получить время сервера - в часовом поясе, установленном для сервера?
Ответы
Ответ 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');
Ответ 4
Вы пытались использовать date_default_timezone_set()
Американские часовые пояса можно найти здесь http://www.php.net/manual/en/timezones.america.php