UTC 是不是遵守夏令时?

Posted

技术标签:

【中文标题】UTC 是不是遵守夏令时?【英文标题】:Does UTC observe daylight saving time?UTC 是否遵守夏令时? 【发布时间】:2011-07-26 15:10:03 【问题描述】:

我正在尝试编写一个脚本,我想将任何时区转换为UTC 并反转。 但是从一些地方我了解到,在考虑或不考虑 DST 的情况下将任何时区转换为 UTC 时,它会给出相同的 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 ..........

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

【问题讨论】:

如果您向我们展示脚本,我们可以为您提供更好的帮助。 而且,在回答您的标题问题时,没有 UTC 不遵守夏令时;但是,其他区域可能会。 【参考方案1】:

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

来自Wikipedia UTC page:

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

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

在不太了解 php 时区处理的情况下,您可以在转换中指定“带 DST”或“不带 DST”对我来说似乎很奇怪 - 时区本身指定 DST 何时开始......它不应该必须是您自己指定的内容。

【讨论】:

"在不了解 PHP 时区处理的情况下,您可以在转换中指定 'with DST' 或 'without DST' 对我来说似乎很奇怪"...这可能是因为您没有做了很多可编程超链接面食。这是具有内置date_sunrise 函数的语言,可以告诉您太阳何时升起。我不确定转换是否需要 DST,但它是日期对象的一等公民:php.net/manual/en/function.date.php。 @PaulDraper:成为日期对象的一等公民是有一定意义的——只是没有为转换单独指定它。不过,从那以后,我对一些底层 C 例程有了更多了解,我怀疑它们与此有很大关系…… 我觉得问一下是不是夏令时没问题。如果没有额外的信息,就无法从本地时间+时区移动到明确的 UTC 时间。这是因为在退出 DST 期间,某些本地时间会出现两次。 @Tom:我非常清楚当地时间会出现两次,但这并不意味着在转换本身中指定当地时间是否在 DST 中是一个好主意。最好 - IMO - 指定一种解决歧义的方法如果它是模棱两可的。我更喜欢 API 以避免让您表达不可能的情况,例如 1 月的 EDT。 如果你对如何在 PHP 中设置时区感到困惑,那是因为 PHP 是一团糟,这里有一篇关于为什么 php 应该退役的精彩文章:eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design【参考方案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

希望这会有所帮助:)

【讨论】:

嗯,那是正确的,因为当您将时区设置为 UTC 时,在夏季,您会得到比本地时间晚一小时的时间(在伦敦)。 timeanddate.com/time/zone/uk/london

以上是关于UTC 是不是遵守夏令时?的主要内容,如果未能解决你的问题,请参考以下文章

Windows UTC 时间是不是独立于夏令时?

夏令时和 UTC 时间

UTC 到夏令时的当地时间

UTC 时间、时区、夏令时和夏令时切换日期

各种时间格式(UTC、GMT等)及夏令时和冬令时

在python中将具有时区缩写的非UTC时间字符串转换为UTC时间,同时考虑夏令时