Должно быть, я делаю что-то глупое. Следующий код должен создать временную метку относительно заданной строки часового пояса. Однако он всегда создает метку времени по сравнению с часовым поясом сервера по умолчанию.Почему моя настройка часового пояса не работает?
$this->timezone = "America/Edmonton";
/*Server's default timezone is "America/Toronto"*/
$n->sendTime = "13:25:00";
$objTimeZone = new DateTimeZone($this->timezone);
$objSendTime = new DateTime($n->sendTime);
$objSendTime->setTimezone($objTimeZone);
$sendTime = $objSendTime->getTimeStamp();
$timeNow = time(); //Timestamps are all relative to UTC
if (($timeNow - $sendTime) > 300 || ($timeNow - $sendTime) < 0){
//Send time is not within last 5 minutes or is in future//
echo "Don't Send!";
}
echo "Send!";
Ожидаемое поведение: если время в пределах 5 минут 13:25:00 Время в горах, код будет эхом «Отправить!»;
Фактическое поведение: если время находится в пределах 5 минут 13:25:00 по восточному времени, код перекликается с «Отправить!»;
Может кто-нибудь объяснить мне, почему setTimezone() не работает должным образом?
'Американский/Эдмонтон' не действительный часовой пояс, используйте' America/Edmonton'. – ForguesR
Это опечатка - нет в фактическом коде. – fred2