为什么我无法在Javascript Date对象上使用getDay()方法和getUTCDay()方法获得相同的结果

时间:2019-02-18 05:51:22

标签: javascript node.js typescript date utc

今天我们是星期一,今天是我从魁北克市开始的00:51,因此我在GMT-0500(UTC-05:00)

我不知道为什么下面的代码给我2个不同的结果:

@ComponentScan(basePackages = "controller")

在MDN网站上,他们说getDay()方法根据本地时间返回指定日期的星期几,其中0代表星期日。

他们说的完全相同。getUTCDay()方法根据通用时间返回指定日期中的星期几,其中0代表星期日。

唯一的区别是一个是根据当地时间,另一个是根据世界时间...

我不确定应该验证什么以了解我尝试过in Node.js (Typescript)和在控制台Chrome DevTools (Javascript)中所做的区别

在我的计算机设置中,一周的第一天是星期日...

1 个答案:

答案 0 :(得分:1)

new Date( string )使用Date.parse()来解析日期。

来自Date.parse() docs

  

如果没有时区偏移,则仅日期形式将被解释为UTC时间,而日期时间形式将被解释为本地时间。

因此,new Date('2019-02-18')创建的日期将恰好是 UTC时间中的2019年2月18日午夜。

如果您所在的时区带有负偏移,则该日期实际上将是当地时间的星期日(魁北克市为GMT-0500,因此该日期为当地时间2019-02-17:19:00:00)。

因此,如果您所在的时区偏移量为负,则.getDay()正确返回0代表星期日,而.getUTCDay()正确返回1代表星期一。 / p>