Ben*_*ent 2 javascript date utc node.js typescript
今天是星期一,上午 00:51 我来自魁北克市,因此我的时间为 GMT-0500 (UTC\xe2\x88\x9205:00)
\n\n我不知道为什么下面的代码给了我两个不同的结果:
\n\nconst weekday = Array(\'sunday\', \'monday\', \'tuesday\', \'wednesday\', \n \'thursday\', \'friday\', \'saturday\');\n\nconsole.log(\'getDay() =\', weekday[new Date(\'2019-02-18\').getDay()]); \n // getDay() = sunday\n\nconsole.log(\'getUTCDay() =\', weekday[new Date(\'2019-02-18\').getUTCDay()]); \n // getUTCDay() = monday\nRun Code Online (Sandbox Code Playgroud)\n\n在 MDN 网站上,他们说 getDay() 方法根据当地时间返回指定日期的星期几,其中 0 代表星期日。
\n\n他们说的完全一样 getUTCDay() 方法根据通用时间返回指定日期中的星期几,其中 0 代表星期日。
\n\n唯一的区别是,一种是根据当地时间,另一种是根据世界时间......
\n\n我不确定我应该验证什么来理解我在 Node.js (Typescript)和控制台Chrome DevTools (Javascript)中尝试的差异
\n\n在我的电脑设置中,一周的第一天是星期日...
\nnew Date(string)用于Date.parse()解析日期。
来自Date.parse() 文档:
当时区偏移量不存在时,仅日期形式将解释为 UTC 时间,而日期时间形式将解释为本地时间。
因此,创建的日期new Date('2019-02-18')将恰好是UTC 时间2019 年 2 月 18 日午夜。
如果您所在的时区偏移量为负,则该日期实际上是当地时间星期日(魁北克市的时间为 GMT-0500,因此该日期为当地时间 2019-02-17:19:00:00)。
因此,如果您所在的时区偏移量为负,则周日.getDay()正确返回0,而周一.getUTCDay()正确返回。1