getDay 与 getUTCDay 本质区别

背景 

我在做这个实验的时候是北京时间:2024年6月12日 下午16:32分许

研究方向

本文探讨 getDay getUTCDay 本质区别

测试用例

如果你现在的时区设置的是 (UTC+08:00) 北京,重庆,香港特别行政区,乌鲁木齐

a. 那么来上这段代码

const d = new Date();
var d1 = d.getDay();
var d2 = d.getUTCDay();
console.log(d1,d2)

将是整齐划一,输出一致。

3 3

乍一看好像没什么区别。

b. 那么你再来这段代码

const d = new Date();
console.log( d.getUTCMonth()+1 + '-'+ d.getUTCDate() +' '+ d.getUTCHours() +':'+ d.getUTCMinutes()+'--->'+'【UTC】')
console.log(d.getMonth()+1 + '-'+ d.getDate() +' '+ d.getHours() +':'+ d.getMinutes()+'--->'+'【本地】')
6-12 9:53--->【UTC】
6-12 17:53--->【本地】

你会发现,输出的差额正好符合这张图所显示数字+8

c. 那么当你在北京时间13日0点去打印时

const d = new Date();
console.log( d.getUTCMonth()+1 + '-'+ d.getUTCDate() +' '+ d.getUTCHours() +':'+ d.getUTCMinutes()+'--->'+'【UTC】')
console.log(d.getMonth()+1 + '-'+ d.getDate() +' '+ d.getHours() +':'+ d.getMinutes()+'--->'+'【本地】')

console.log(d.getUTCDay())
console.log(d.getDay())

不出意外的话输出 

6-12 16:00--->【UTC】
6-13 0:00--->【本地】
3
4

相关文献说明

来看看相关文案的解释

JavaScript中的 getUTCDay() getDay() 方法都是 Date 对象上的方法,用于获取日期对象中的星期几信息。它们之间的本质区别在于时区的影响。

  • getUTCDay()返回的是一个基于世界标准时间(UTC)的星期几,范围是0(代表星期日)到6(代表星期六)。
  • getDay()返回的是基于本地时间的星期几,范围也是0(代表星期日)到6(代表星期六)。

要注意的是,这两个方法返回的值都是基于0的,即0代表星期日1代表星期一,以此类推,直到6代表星期六

因此,getUTCDay()返回的是基于UTC的星期几,而getDay()返回的是基于本地时间的星期几。

疑惑

我们现在抓关键信息UTC

将你本地的时区修改为(UTC)协调世界时

设置完成之后,你会发现你的日期已经变成了2024/6/12号 10:05

这时候你再刷新你的主页面代码,将会输出

6-12 10:5--->【UTC】
6-12 10:5--->【本地】
3
3

上升

将你的时区调整为(UTC-12:00)国际日期变更线西

设置完后,你会发现时间变成了2024年6月11日 22:07

控制台输出

6-12 10:7--->【UTC】
6-11 22:7--->【本地】
3
2

上升解答

getDay()是获取你本地的时间并给予输出,以上图示例:6月11日22:7-星期二,输出2。

getUTCDay()是获取你本地时区并结合国际日期变更线给予输出,

综上示例:6月12日10:7-星期三,输出3。国际日期变更线两侧的日期是不同的, 变更线以西,由于在0°线的东面。

时间与0°线处相差12小时,这时已度过了6月11日,正是6月12日的10点许;而变更线以东,这时是6月11日22点许。


完,欢迎大家来探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vinca@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值