на shell, мое время сервера (простая date
в bash): вс 29 августа 10:37:12 EDT 2010
когда я запускаю код php -r "echo date('Ymd H:i:s');"
Я получаю: 2010-08-29 10:37:10
но когда я выполняю php-скрипт с echo date('Ymd H:i:s');
Я получаю другое время, поскольку php считает, что часовой пояс UTC (время сервера – EDT).
У моего php.ini-файла нет набора часового пояса, и я бы не хотел ничего менять, поскольку я понятия не имею, какое влияние он повлияет на другие сайты, которые запускаются на этом сервере.
Есть ли простой способ получить время сервера – в часовом поясе, установленном для сервера?
Согласно странице руководства директив 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 – это значение по умолчанию, если все из них не работают, поэтому это, вероятно, хорошая отправная точка.
Сервер всегда должен иметь часовой пояс, указанный в файле php.ini
. PHP 5.3 даже вызывает уведомления, если это не так, и расширение DateTime
генерирует исключения, если вы пытаетесь создать объекты без явного указания часового пояса (с объектом DateTimezone
) или имеющего значение по умолчанию (либо через date.timezone
либо date_default_timezone_set
).
По тому, что вы описываете, наиболее вероятными сценариями являются:
date_default_timezone_set('UTC')
или эквивалент. Поздно для вечеринки, но если вы хотите установить часовой пояс без редактирования php.ini, вы можете поместить в код php одну из следующих строк:
date_default_timezone_set('GMT'); date_default_timezone_set('Europe/Zurich'); date_default_timezone_set('America/New_York');
Вы пробовали использовать date_default_timezone_set (). Американские часовые пояса можно найти здесь http://www.php.net/manual/en/timezones.america.php