关于javascript:JS中的UTC,GMT和夏令时之间的差异

Difference between UTC, GMT and Daylight saving time in JS

我已经读了很多帖子,对UTC、格林尼治标准时间和夏令时有点困惑。

任何人都可以用UTC、GMT和夏令时来解释javascript Date()对象。

我想知道的要点是,当我们和日期一起工作时,我们需要考虑或不考虑夏令时。

计算UTC、格林尼治标准时间和夏令时的方法是相同的,还是不同的编程语言。


UTC是标准,GMT是时区。UTC使用与格林尼治标准时间相同的偏移量,即+00:00。在讨论补偿时,它们基本上是可以互换的。

所有javascript(ecmascript)日期对象使用的时间值为1970-01-01t00:00:00z以来的UTC毫秒。在没有任何参数的情况下调用日期构造函数时,它从主机系统获取时间和时区偏移量,并计算时间值。因此,生成日期的准确性取决于这些组件的准确性。

使用UTC方法输出日期值时(例如getutchours、getutcminutes等),值为UTC(gmt)。当不使用这些方法(例如GetHours、GetMinutes等)时,主机系统时区偏移量与时间值一起使用,以从UTC时间值生成"本地"值。

是否应用日光节约取决于主机系统设置。无论主机系统的当前规则是什么,夏令时的时区更改都适用于所有日期,而不考虑该日期的实际偏移(例如,如果当前DST在10月的第一个星期日开始,则假定它始终在10月的第一个星期日开始)。

日期对象行为在ECMA-262第20.3.2节中有描述,在MDN日期中有一点更清楚(对于某些部分)。