当前位置: 首页 > news >正文

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点许。


完,欢迎大家来探讨

相关文章:

  • 基于 Delphi 的前后端分离:之三,使用 HTMX
  • H323 截包分析辅流问题
  • 力扣42 接雨水
  • mysql社区版有可以双机吗
  • 大城市与小城市的一些感受
  • C++中的适配器模式
  • 欢乐打地鼠小游戏html源码
  • 面试题:callable与runable的区别?
  • python中字典的创建
  • Spring AI 第二讲 之 Chat Model API 第九节 watsonx.ai Chat
  • 微生物实验室建设公司独家分享:从平面布局到高效设备的全流程设计技巧
  • YOLOV5总结
  • C++基础编程100题-009 OpenJudge-1.3-07 计算多项式的值
  • 协程-在单个线程内部执行
  • 为什么要分析电商用户数据?详解两大用户数据分析维度
  • hexo+github搭建个人博客
  • SegmentFault for Android 3.0 发布
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 08.Android之View事件问题
  • 2019年如何成为全栈工程师?
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular 4.x 动态创建组件
  • CentOS从零开始部署Nodejs项目
  • eclipse的离线汉化
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JavaScript学习总结——原型
  • npx命令介绍
  • Spark RDD学习: aggregate函数
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • underscore源码剖析之整体架构
  • Vue 重置组件到初始状态
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 猴子数据域名防封接口降低小说被封的风险
  • 全栈开发——Linux
  • 如何设计一个微型分布式架构?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 怎么把视频里的音乐提取出来
  • HanLP分词命名实体提取详解
  • ​Redis 实现计数器和限速器的
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #知识分享#笔记#学习方法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (ZT)一个美国文科博士的YardLife
  • (纯JS)图片裁剪
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (三)模仿学习-Action数据的模仿