最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 1浏览 0评论

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

[今天我们是星期一,我是魁北克市,所以我是GMT-0500(UTC-05:00),今天是00:51

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

const weekday = Array('sunday', 'monday', 'tuesday', 'wednesday', 
                      'thursday', 'friday', 'saturday');

console.log('getDay() =', weekday[new Date('2019-02-18').getDay()]); 
  // getDay() = sunday

console.log('getUTCDay() =', weekday[new Date('2019-02-18').getUTCDay()]); 
  // getUTCDay() = monday

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

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

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

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

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

回答如下:

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

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

[今天我们是星期一,我是魁北克市,所以我是GMT-0500(UTC-05:00),今天是00:51

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

const weekday = Array('sunday', 'monday', 'tuesday', 'wednesday', 
                      'thursday', 'friday', 'saturday');

console.log('getDay() =', weekday[new Date('2019-02-18').getDay()]); 
  // getDay() = sunday

console.log('getUTCDay() =', weekday[new Date('2019-02-18').getUTCDay()]); 
  // getUTCDay() = monday

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

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

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

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

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

回答如下:

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

发布评论

评论列表 (0)

  1. 暂无评论