我已经读了很多文章,对UTC、GMT和夏令时有点困惑。
任何人都可以用UTC、GMT和夏令时来解释javascriptDate()
对象。
我想知道的主要一点是,当我们处理日期时,我们需要考虑夏令时。
在不同的编程语言中,UTC、GMT和夏令时的计算是相同的还是不相同的。
UTC是标准时间,GMT是时区。UTC使用与GMT相同的偏移量,即+00:0。在讨论偏移时,它们本质上是可互换的。
自1970-01-01T00:00:00Z以来,所有javascript(ECMAScript)Date对象都使用UTC毫秒的时间值。当在没有任何参数的情况下调用Date构造函数时,它会获取主机系统的时间和时区偏移量,并计算时间值。因此,生成日期的准确性取决于这些组件的准确性。
当使用UTC方法(例如getUTCHours、getUTCMinutes等)输出日期值时,值为UTC(GMT)。当不使用这些方法(例如getHours、getMinutes等)时,主机系统时区偏移量与时间值一起使用,以从UTC时间值生成"本地"值。
是否应用夏令时取决于主机系统设置。无论主机系统时区的当前规则是什么,夏令时的更改都适用于所有日期,而不管该日期的实际偏移量是多少(例如,如果当前夏令时从10月的第一个星期日开始,则假定它总是在10月的第一个星期天开始)。
日期对象行为在ECMA-262§20.3.2中有描述,在MDN日期中有更清晰的描述(对于某些部分)。