Unix 时间戳转换工具

在浏览器中运行,不上传任何内容

把秒、毫秒、微秒或纳秒级的 Unix 时间戳转换为任意时区的日期,也可以反向转换。

Now—

Timestamp or date

Numbers are read as seconds, milliseconds, microseconds or nanoseconds by their size. Date strings can be ISO 8601 or RFC 2822.

Date and time to timestamp

Pick a date

The time defaults to midnight. The result counts from 1970-01-01 00:00 UTC, whichever zone you pick.

什么是 Unix 时间戳?

Unix 时间戳是自 1970 年 1 月 1 日 00:00:00 UTC(即 Unix 纪元)以来经过的秒数。0 就是纪元本身,1700000000 是 2023 年 11 月 14 日,负数表示 1970 年之前的日期。

时间戳没有时区:1721234567 在任何地方都表示同一时刻,比较或排序时间就是比较数字。只有当时刻显示在时钟上时时区才有意义,所以转换工具会把 UTC 和你选择的时区并排显示。

注意单位。Unix 工具和大多数后端使用秒;JavaScript 的 Date.now() 和许多 Java API 使用毫秒;Go、数据库和链路追踪系统常用微秒或纳秒。对当前日期来说,分别是 10、13、16 或 19 位数字。把一种单位误读成另一种,会得到 1970 年的日期,或几千年之后的日期。

使用方法

  1. 1在 Timestamp or date 字段中粘贴时间戳或日期,或按 Now(Alt+N)使用当前时间。
  2. 2数字会根据位数被识别为秒、毫秒、微秒或纳秒,字段下方的一行会说明识别结果。如果识别错误,请手动选择单位。
  3. 3日期字符串可以是 ISO 8601(2024-07-17T16:42:47Z,带或不带偏移量)或 RFC 2822(Wed, 17 Jul 2024 16:42:47 +0000)。不带偏移量的日期按所选时区解读。
  4. 4查看各种形式的结果:所有单位、UTC 和所选时区的 ISO 8601、RFC 2822、可读日期、相对于现在的时间以及 ISO 周。每一行都有复制按钮。
  5. 5要反向转换,请在 Date and time to timestamp 中选择日期、时间和时区。

问题排查

日期变成了 1970 年 1 月
这个值很可能是毫秒或更小的单位却被当作秒读取,或者反过来。检查字段下方的单位说明,并选择正确的单位。
所选时区中不存在这个时间
实行夏令时、时钟拨快时,会跳过一个小时;例如在柏林,2024 年 3 月 31 日 02:30 从未出现过。请选择跳过区间之外的时间,或使用 UTC。
同一个日期时间对应两个时间戳
时钟拨回时,会有一个小时出现两次,所以这一小时内的本地时间对应相隔一小时的两个时刻。两者都会显示;除非另有指定,系统通常取第一个。
超出日期可表示的范围
JavaScript 日期覆盖的年份是 −271821 到 275760。超出这个范围的值,通常是单位比所选的更小;试试毫秒或纳秒。

常见问题

如何区分秒和毫秒?

数位数。2001 年到 2286 年之间的日期,用秒表示是 10 位,毫秒是 13 位,微秒是 16 位,纳秒是 19 位。转换工具就是按这个规则判断的,并会说明选择了哪个单位。

Unix 时间戳有时区吗?

没有。时间戳是从 UTC 纪元开始计数的,所以在任何地方都表示同一时刻。ISO 8601 字符串会带有 +05:30 这样的偏移量,表示那一刻当地时钟显示的时间。

时间戳会计入闰秒吗?

不会。Unix 时间把每一天都当作恰好 86,400 秒,所以像 23:59:60 这样的闰秒没有自己的时间戳。转换工具会把第 60 秒读作 59 秒,并给出说明。

什么是 2038 年问题?

把时间戳存为有符号 32 位整数的系统最多只能计到 2147483647,也就是 2038 年 1 月 19 日 03:14:07 UTC;之后数值会溢出。使用 64 位时间戳可以避免这个问题。

时区规则来自哪里?

来自浏览器内置的时区数据库(IANA 时区数据库,通过 Intl 访问),所以夏令时变更的准确程度与你的浏览器一致。不会联网获取任何内容。