2013-08-23 5 views
1

По какой-то причине функция date() не выводит дату и время, скорректированные с учетом часового пояса. При отладке я обнаружил странное несоответствие. Мой часовой пояс определен в php.ini как America/New_York. Когда я называю это:PHP часовой пояс от php.ini не применяется

echo ini_get('date.timezone');

Я получаю America/New_York, чего я ожидал. Однако, когда я называю это:

echo date_default_timezone_get();

UTC я. Кажется, что это отвечает за метод date(), возвращающий время в часовой пояс UTC. Почему это происходит? Как заставить PHP уважать часовой пояс, найденный в php.ini?

UPDATE

Я в конечном счете, просто пытаюсь получить часовой пояс с поправкой на время от date('Y-m-d G:i:s'). Поскольку мой часовой пояс установлен в php.ini, как мне получить правильную дату/время от date()?

+0

Уважение? В соответствии с ручной документацией рассматриваемой функции - ['date_default_timezone_get()'] (http://php.net/date_default_timezone_get) - не существует определенной связи 1: 1 между настройкой ini и только - и только если используется - между этим и 'date_default_timezone_set()' (копия параметров). Так что ты спрашиваешь здесь? Только то? – hakre

+0

все, о чем я забочусь, когда я называю '' 'date ('Y-m-d G: i: s')' '' Я хочу, чтобы дата/время, скорректированная по часовому поясу. – sebolith

+0

Да, именно так я тебя понял. Вероятно, вам стоит попробовать, если он теперь работает для вас. – hakre

ответ

0

Если я понимаю смысл уважения прямо в вашем вопросе, вам интересно, что date_default_timezone_get() не возвращает настройку ini. Вы можете изменить это с помощью вызова этой линии до операции получим:

date_default_timezone_set(ini_get('date.timezone')); 

Смотри, как хорошо Пример # 2 Получение аббревиатуры временной зоны от руководства, которое охватывает, что:

<?php 
date_default_timezone_set('America/Los_Angeles'); 
echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T'); 

выше пример будет выводиться:

America/Los_Angeles => America/Los_Angeles => PST 
+0

Спасибо, но на самом деле я не забочусь о '' 'date_default_timezone_get()' '' per se, все, что мне нужно, это когда я вызываю '' 'date ('Ymd G: i: s')' '' Я хочу дата/время, скорректированная по часовому поясу. – sebolith

+0

Ну, вы заботитесь о 'date()', правее. Вот почему я добавил пример в ответ, который показывает, как на это влияет функция date(). Вы могли бы просто упустить это, иначе я не понимаю, почему вы так прокомментируете. Просто дайте мне знать, если это еще не ответит на ваш вопрос. – hakre

Смежные вопросы