什么是 Unix 时间戳
Unix 时间戳(Unix timestamp / Epoch time)是从 1970 年 1 月 1 日 0 时 0 分 0 秒(UTC)起经过的秒数,不含闰秒。它与时区无关:同一时刻在全球任何地方的时间戳都相同,只是换算成“本地时间”时才加上时区偏移。北京时间是东八区(UTC+8),所以北京时间 = UTC + 8 小时,例如时间戳 1700000000 对应 UTC 2023-11-14 22:13:20,北京时间 2023-11-15 06:13:20。
常见的时间戳有两种精度:秒级是 10 位数字(如 1700000000),毫秒级是 13 位(如 1700000000000)。JavaScript 的 Date.now() 返回毫秒,Python 的 time.time() 和 Linux 的 date +%s 返回秒,Java 的 System.currentTimeMillis() 返回毫秒。本工具按位数自动识别:12 位及以上按毫秒处理,其余按秒处理。把毫秒当秒会得到公元几万年的日期,把秒当毫秒则得到 1970 年 1 月,这是最常见的转换错误。
格式与注意事项
结果给出三种写法:YYYY-MM-DD HH:mm:ss 是最常见的显示格式;ISO 8601 形如 2023-11-15T06:13:20+08:00,末尾的 +08:00 表示时区,UTC 用 Z 表示;UTC 时间是数据库和日志中推荐的存储口径。本页北京时间按 UTC+8 固定计算,不依赖浏览器所在时区,只有“本地时间”一行才随您的设备时区变化。
2038 年问题:用 32 位有符号整数存储秒级时间戳,最大只能到 2038 年 1 月 19 日 03:14:07 UTC(2147483647),之后会溢出为负数。现代 64 位系统和 JavaScript 已不受此限,但老旧的嵌入式设备、数据库的 INT 字段仍可能出错,新项目建议用 64 位整数或 DATETIME 类型存储。