锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

时间戳的理解

时间:2023-01-28 12:30:00 插座连接器dc060t00

理解时间戳

  • 背景
  • 定义
  • 解释
    • 日期和时间的表示方法
    • UTC
    • 时间戳在中国
  • 总结
  • 延伸
  • 参考资料

背景

最近,需求涉及不同时区的时间展示,发现自己对时间戳的理解存在误差。

定义

Unix 197年1月1日,时间戳(UTC/GMT午夜)开始经过的秒数,不考虑闰秒。
UNIX时间戳的 0 按照 ISO 8601 规范为 :1970-01-01T00:00:00Z.

解释

简单地说,时间戳是当前的时间距离 1970-01-01T00:00:00Z 有多少秒。
例如,当前时间是 2022年7月6日10:32,所以这个时间点对应的时间戳是 1657074770

2022年7月6日10:32 - 197年1月1日0:00 = 1657074770 (秒)

这里忽略了两件事,1970-01-01T00:00:00Z 字母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 08:00
在中国计算时间戳时的时间起点是 1970-01-01T00:00:00 08:00
时间戳 = 2022-07-06T11:19:31 08:00 - 1970-01-01T00:00:00 08:00
而不是 2022-07-06T11:19:31 08:00 - 1970-01-01T00:00:00Z

总结

  • 时间戳是 绝对的,在同一时间点上,世界上任何国家计算的时间戳都是相同的值
  • 时间包含时区,相同时区 时间可以减去

延伸

  • 存储中使用时间戳的优点之一是可以在代码中动态格式化为不同国家(时区)的时间,不受外部环境(如db)的影响

参考资料

unix时间戳定义
ISO 8601
UTC

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章