UTC 是否遵守夏令时?

2022-08-30 07:59:35

我正在尝试编写一个脚本,我想将任何时区转换为并反转。但是从一些我开始知道的地方,在将任何时区转换为有或没有DST考虑时,它将给予相同的时间。例如:如果我尝试转换这个:UTCUTCUTC

$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 ..........

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


答案 1

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

来自维基百科UTC页面

UTC 不会随季节的变化而变化,但如果时区管辖区遵守夏令时或夏令时,则本地时间或民用时间可能会发生变化。例如,UTC 在冬季比美国东海岸的当地时间早 5 小时,但在夏季比当地时间早 4 小时。

换句话说,当一个时区遵守 DST 时,当存在 DST 转换时,它与 UTC 的偏移量会发生变化,但这是该时区在遵守 DST,而不是 UTC。

在不了解PHP时区处理的情况下,您可以在转换中指定“使用DST”或“不带DST”似乎很奇怪 - 时区本身指定DST何时启动...它不应该是你自己指定的东西。


答案 2

我遇到了同样的问题,使用以下代码:

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

希望这有助于:)


推荐