我正在尝试用下面的一段代码转换时区,除了AWST时区外,它运行良好。
$date = time();
$timeZone = "AWST";
$dt = new DateTime();
$dt->setTimestamp($date);
$dt->setTimezone(new DateTimeZone($timeZone));
echo $dt->format('Y/m/d H:i:s');
如果我输入$timeZone="UTC"或其他正常工作的东西。专家可以帮我摆脱困境。
我怀疑问题在于您需要指定一个IANA时区ID,而不仅仅是一个缩写。由于各种原因,时区缩写确实存在问题:
- 它们通常表示一个时区的"一半";例如,"欧洲/伦敦"在"GMT"one_answers"BST"之间切换
- 它们可能是模棱两可的——例如,"CST"在不同的地方(在历史的不同时刻)意味着不同的事情
- 在一年中的不同时间,不同的地方在不同的缩写之间切换
如果你能为你关心的地方获得正确的时区ID,那么在假设时区数据完整准确的情况下,这将为你提供整个历史上正确的本地时间。
就你的情况而言,我相信你想要澳大利亚/珀斯时区。试试这个:
$timeZone = "Australia/Perth"