我想改变时间的时区,如:
2015-08-24 01:30:40
所以它在America/Los_Angeles
时区,但下面的代码没有按预期工作:
$timedate = date_timezone_set(
date_create_from_format('Y-m-d h:i:s A', $row[timezone]),
new DateTimeZone('America/Los Angeles')
);
$row[timezone]
已成功返回2015-08-24 01:30:40
,但当我这样做以尝试更改时区时,它无法正常工作。
之后的所有PHP代码都不会运行。我已经做了很多搜索,但我无法弄清楚如何让它正常工作所以有人能告诉我我做错了什么?
答案 0 :(得分:3)
您对date_create_from_format的调用在格式字符串的末尾包含一个A - 看起来似乎对我有好感,因为您的值不会以am或pm结尾。您对h
的使用看起来也不太正确,因为这样做的时间为12小时,当您没有使用时,这不是很有用pm指标。我怀疑你想要一种格式
Y-m-d H:i:s
这似乎更符合你的样本字符串...
此外,如评论中所述,您的时区ID应为'America/Los_Angeles'
而不是'America/Los Angeles'
。
我还会将您在这一大段代码中进行的各种调用分开,以便更容易诊断 - 这样您可以告诉它解析失败,而不是任何事情。与时区有关。这里有三个独立的操作:
将这三个保存在单独的语句中将使代码更易于阅读和维护。 (特别是,您能够独立地找到并纠正这两个问题......)