此PHP代码应将澳大利亚/悉尼日期时间转换为UTC。它不起作用。生成的日期时间未转换:
$local_datetime = "2018-04-11 16:01:48";
echo "Local datetime: $local_datetime<br>";
$local_timezone = new DateTimeZone('Australia/Sydney');
$datetime = new DateTime($local_datetime, $local_timezone);
$utc_timezone = new DateTimeZone('UTC');
$datetime->setTimeZone($utc_timezone);
$utc_datetime = $datetime->format('Y-m-d H:i:s');
echo "UTC datetime: $utc_datetime";
输出结果为:
Local datetime: 2018-04-11 16:01:48
UTC datetime: 2018-04-11 16:01:48
我在phptester.net上尝试了代码并得到了正确的结果:
Local datetime: 2018-04-11 16:01:48
UTC datetime: 2018-04-11 06:01:48
我还使用了检查我的时区名称:
DateTimeZone::listIdentifiers(DateTimeZone::ALL);
'澳大利亚/悉尼'和'UTC'都在名单上。
知道可能出现什么问题吗?
编辑 - 似乎在此命令中指定“UTC”作为时区是问题:
$utc_timezone = new DateTimeZone('UTC')
如果我将其更改为
$utc_timezone = new DateTimeZone('Atlantic/Reykjavik');
然后我得到正确的转换到冰岛时间,这与UTC相同:
Local datetime: 2018-04-11 16:01:48
UTC datetime: 2018-04-11 06:01:48
我仍然不知道为什么“UTC”在我的服务器上不起作用。但“大西洋/雷克雅未克”是一种解决方法。