从格林尼治时间 1970 年 1 月 1 日 0 时 0 分 0 秒算起 (北京时间 1970 年 1 月 1 日 8 时 0 分 0 秒), 开始计算时间戳
时间戳大致分两种格式
一种是 10 位, 精确到秒 (大多数情况)
一种是 13 位, 精确到毫秒
时间戳可以用多久呢?
我们可以大致算一下:
一年 31536000 秒, 时间戳最多纪录 9999999999 秒, 9999999999/31536000 ≈ 317 年, 10 位的时间戳大约可以使用 317 年, 1970+317=2287 年, 也就是 2286 年就要考虑变更到 11 位时间戳了
如果精确计算一下 (考虑闰年)
10 位时间戳耗尽的准确的时间是
2286 年 11 月 21 日 1 时 46 分 39 秒
11 位时间戳耗尽的准确的时间是
5138 年 11 月 16 日 17 时 46 分 39 秒
12 位时间戳耗尽的准确的时间是
33658 年 09 月 27 日 9 时 46 分 39 秒
Python 时间戳默认是 10 位 (精确到秒)
- import time
- # 获取时间戳
- timestamp = int(time.time())
- print(timestamp)
- # 将时间戳转换为结构化时间格式
- struct_time = time.localtime(timestamp)
- print(struct_time)
JavaScript 时间戳默认是 13 位 (精确到毫秒)
- // 获取毫秒时间戳 (13 位)
- let timestamp = new Date().getTime();
- console.log(timestamp);
- // 将毫秒时间戳转换为结构化时间格式
- let struct_time = new Date(timestamp);
- console.log(struct_time);
小结
在实际开发中, 为了避免重放攻击, 往往需要对 http 请求, 附加时间戳参数
为了让开发文档更加明确易读, 时间戳要指明是 10 位或 13 位
过两天就过年了, 如果想祝人长寿, 不如来一句, 你会见证 11 位时间戳的出现
来源: http://www.jianshu.com/p/b9ed76ab4583