加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

unix时间戳 JS 之Date类型的认识

发布时间:2022-10-15 07:00:53 所属栏目:Unix 来源:网络
导读: Date 类型平常用得不是很多,但一用到,对它的使用就感到不是很熟悉,每次都是强行百度一波,可以看出自己的基础不是很牢。所以最近决定静下心来好好回顾一下以前自己忽视的基础,下面是我

Date 类型平常用得不是很多,但一用到,对它的使用就感到不是很熟悉,每次都是强行百度一波,可以看出自己的基础不是很牢。所以最近决定静下心来好好回顾一下以前自己忽视的基础,下面是我对 Date 类型的一些总结和看法。

UTC 和 GMT 及 北京时间的关系

在介绍Date类型前,我们先来了解一下 UTC 和 GMT 及 北京时间的关系。GMT 即「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.),指位于英国伦敦郊区的皇家格林威治天文台的标准时间,因为本初子午线被定义为通过那里的经线。然而由于地球的不规则自转,导致GMT时间有误差,因此目前已不被当作标准时间使用。

UTC 是最主要的世界时间标准,是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间。UTC 比 GMT 来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使 UTC 与地球自转周期一致。不过日常使用中,GMT 与 UTC 的功能与精确度是没有差别的,我们在文章中提到的 GMT 时间与 UTC 时间是一样的。

GMT = UTC

因为时区的问题北京时间和UTC时间有这样的关系 UTC + 8 = 北京时间 , 这个公式有助于我们后面理解 Date 类型为什么在不同方法下的转换结果不同。

定义

ECMAScript 中的 Date 类型是在早期 Java 中的 java.util.Date 类基础上构建的。为此 Date 类型使用自 UTC ( Coordinated Universal Time, 国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date()类型保存的日期能够精确到1970年1月1日之前或之后的100 000 000年。

我们可以这样理解,我们创建的一个 Date 对象中保存有一个 value,这个 value 的大小是从 UTC 时间1970年1月1日午夜至指定时间经过的毫秒数的大小。这个值其实就是我们经常使用到的时间戳,需要注意的是js内的时间戳指的是指定时间到1970年1月1日00:00:00 UTC对应的毫秒数,和unix时间戳不是一个概念unix时间戳,后者表示秒数,差了1000倍。因此我们在转换时经常会遇到精度丢失的问题(暂时采用这种说法)。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!