#php #date #time #timezone
#php #Дата #время #Часовой пояс
Вопрос:
Я использую Wanp в качестве тестового сервера. Вот мой код:
$dt = time();
$mysql_datetime = strftime("%Y-%m-%d %H:%M:%S %p %z" , $dt);
echo $mysql_datetime;
Вот результат:
2011-04-17 01:36:55 PM Eastern Standard Time
Моя проблема в том, что вся информация верна, за исключением или часа, который на 4 часа опережает. Предполагается, что час ( 01
PM) равен ( 09
AM). Я проверил дату и время на своем компьютере, и часовой пояс указан правильно. Что могло бы вызвать это, пожалуйста, помогите.
Ответ №1:
Скорее всего, это связано с неправильной настройкой часового пояса. (Хотя странно, что %z
является правильным, что я предполагаю.)
Вы пробовали вызывать date_default_timezone_set с соответствующим значением часового пояса?
Ответ №2:
Вы должны сначала правильно установить свой часовой пояс, прежде чем что-либо еще.
Используйте date_default_timezone_set
. Вот список поддерживаемых часовых поясов.
Ответ №3:
Не могли бы вы попробовать использовать класс DateTime (при условии, что у вас достаточно свежий php)?
Что-то вроде:
$dt = new DateTime();
echo $dt->format('Y-m-d H:i:s A e');
В качестве альтернативы, если часовой пояс по-прежнему указан неправильно, вы могли бы попытаться указать его:
$dt = new DateTime(null, new DateTimeZone('EST'));
echo $dt->format('Y-m-d H:i:s A e');
В любом случае, для получения дополнительной информации по отладке я бы рекомендовал вам посмотреть, ini_get('date.timezone')
что, если неверно, должно быть правильно настроено в вашем php.ini
файле.