理解时间戳
- 背景
- 定义
- 解释
-
- 日期和时间的表示方法
- UTC
- 时间戳在中国
- 总结
- 延伸
- 参考资料
背景
最近,需求涉及不同时区的时间展示,发现自己对时间戳的理解存在误差。
定义
Unix 197年1月1日,时间戳(UTC/GMT午夜)开始经过的秒数,不考虑闰秒。 UNIX时间戳的 0 按照 ISO 8601 规范为 :1970-01-01T00:00:00Z.
解释
简单地说,时间戳是当前的时间距离 有多少秒。 例如,当前时间是 ,所以这个时间点对应的时间戳是
2022年7月6日10:32 - 197年1月1日0:00 = 1657074770 (秒)
这里忽略了两件事,1970-01-0100:00:00 字母T和字母Z是什么意思?
日期和时间的表达方法
根据 ISO 8601中规定:
1、对UTC最后,添加一个大写字母Z
例如:UTC下午2:305秒表示14:30:00Z
2.日期和时间合并时,在时间前加一个大写字母T
比如北京时间2004年5月3日下午5:308秒,可以写成2004-05-03T17:30:08 08:00
因此,字母T是一种可以忽略的固定表达方式;UTC时间是什么意思?
UTC
UTC标准时间是世界;标准时间是人为划定区域的时间。
例如:北京时间 2004-05-03T17:30:08 08:00,其中的 08:00为 8小时是相对标准时间 8小时
时间戳在中国
回到时间戳的定义,时间戳被定义为两个时间点的秒差,所以两个时间点 例如:
在中国获得的当前时间是 2022-07-06 11:19:31,表示更标准 2022-07-06T11:19:31 在中国计算时间戳时的时间起点是 1970-01-01T00:00:00 时间戳 = 2022-07-06T11:19:31 - 1970-01-01T00:00:00 而不是 2022-07-06T11:19:31 - 1970-01-01T00:00:00Z
总结
- 时间戳是 ,在同一时间点上,世界上任何国家计算的时间戳都是相同的值
- 时间包含时区, 时间可以减去
延伸
- 存储中使用时间戳的优点之一是可以在代码中动态格式化为不同国家(时区)的时间,不受外部环境(如db)的影响
参考资料
unix时间戳定义 ISO 8601 UTC