我需要将给定的澳大利亚时间转换为 UTC。这次可以来自澳大利亚的不同州。我在数据库中有状态并将时间偏移存储在列中。
我想知道如何以这种方式添加时间偏移或减去它。
// 存储的状态值及其列。
"NT" = +9.30
"QLD" = +10.00
"WA" = +8.00
我以这种方式选择日期时间,需要减少偏移量。
$timeAinUTC = date("H:i A", strtotime("07am")) - (offset);
i.e $timeAinUTC = date("H:i A", strtotime("07am")) - (+9.30);
我怎样才能用 php 的 datetime 完成这种工作?
编辑1,
我试过这个来添加我的偏移量,但似乎我不能提供像 2.30 小时或 2.50 这样的双值
当我要求它以这种方式增加 2 小时时,它会起作用。
strtotime($current_time . "+2hours");
但是当我像下面这样添加时,它是错误的。
strtotime($current_time . "+2.30hours");
编辑 2
澳大利亚提供的所有状态。ACT、NSW、NT、QLD、SA、TAS、VIC、WA
http://wwp.greenwichmeantime.com/time-zone/australia/time-zones/
编辑 3
我在下面尝试了这个,正如答案中的一个人所解释的那样。
$date = new DateTime('2013-10-01 01:45', new DateTimeZone('Australia/Melbourne'));
echo $date->format('Y-m-d h:i:s A') . "<br>";
$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d h:i:s A') . "<br>";
但它输出,
2013-10-01 01:45:00 AM
2013-09-30 03:45:00 PM
这怎么可能是错的?根据我的理解,2013-09-30 03:45:00 PM 是错误的,实际上它应该比 2013-10-01 01:45:00 AM 晚 10 小时成为 UTC,不是吗?