UTC是否遵守夏令时?

时间:2011-03-31 05:52:56

标签: php time dst

我正在尝试编写一个脚本,我想将任何时区转换为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 ..........

这是核心吗?如果是,那么为什么??? 请有人给我你的答案。

2 个答案:

答案 0 :(得分:120)

不,UTC本身从未有过DST。它是相对于其他时区表示的恒定参照系。

来自Wikipedia UTC page

  

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

希望这会有所帮助:)