我正在尝试编写一个脚本,我想将任何时区转换为UTC
并反转。
但是从我所知道的一些情况来看,在将任何时区转换为UTC
时,无论是否考虑DST,它都将给出相同的UTC
时间。
例如:
如果我尝试转换这个:
$mytime = '2011-03-31 05:06:00.000';
$myzone = 'America/New_York';
到UTC与DST,没有DST,我会得到..
(New_York->UTC DST=Yes)2011-03-31 09:06:00
(New_York->UTC DST=No)2011-03-31 09:06:00 ..........
这是核心吗?如果是,那么为什么??? 请有人给我你的答案。
答案 0 :(得分:120)
不,UTC本身从未有过DST。它是相对于其他时区表示的恒定参照系。
UTC不会随着季节的变化而变化,但如果时区管辖区域遵守夏令时或夏令时,则当地时间或民用时间可能会发生变化。例如,UTC在冬季的当地时间比美国东海岸提前5小时,但在夏季提前4小时。
换句话说,当一个时区观察到DST时,它与UTC的偏移会在DST转换时发生变化,但该时区会观察到DST,而不是UTC。
在不了解PHP时区处理的情况下,我似乎很奇怪您可以在转换中指定“with DST”或“without DST” - 时区本身指定DST何时启动...它不应该必须是你自己指定的东西。
答案 1 :(得分:1)
我遇到了同样的问题,使用此代码:
date_default_timezone_set('UTC');
$nowdate = date('l jS \of F Y h:i:s A');
echo "Current date and time is: " . $nowdate;
现在是夏天,这段代码生成的时间落后一小时 - 所以我不认为PHP中的UTC时间会调整为DST。
有兴趣看看是否有人有解决方案......
编辑:
在论坛上找到此代码,效果很好!!
date_default_timezone_set('Europe/London');
$TIME = date("m/d/Y H:i",time());
因此,您可以使用$ TIME调用当前日期和时间。 通过更改date()标记内的位,可以调整输出以显示不同的输出。 如果要调整date()输出,请使用本指南:http://php.net/manual/en/function.time.php
希望这会有所帮助:)