Unix 时间戳转换

Unix 时间戳与日期时间互转,自动判断秒、毫秒、微秒、纳秒,可选择任何时区,并实时显示当前的时间戳。

当前时间

秒
毫秒

时间戳 → 日期时间

日期时间 → 时间戳

例如 2023-11-15 06:13:20 或 2023-11-15T06:13:20.123Z。没有写 Z 或 +08:00 这类时差时,以上方选择的时区为准。

Unix 时间戳是什么?

Unix 时间戳是从 1970 年 1 月 1 日 00:00:00 UTC 起算经过的秒数,和时区无关:同一个时刻在北京和伦敦的时间戳都一样,只是显示成当地时间时不同。数据库、API 和日志常用它来记录时间。

如何使用

  1. 在「时间戳 → 日期时间」粘贴时间戳,下方会立即显示日期时间、ISO 8601、UTC、星期与相对时间。
  2. 在「日期时间 → 时间戳」输入日期时间,会换算成秒、毫秒、微秒、纳秒。
  3. 用上方的「时区」选择显示与换算时使用的时区,默认为你电脑的时区。

秒、毫秒、微秒、纳秒怎么区分?

工具会按位数自动判断:当前的时间戳以秒表示是 10 位,毫秒 13 位、微秒 16 位、纳秒 19 位。JavaScript 的 Date.now() 与 Java 的 System.currentTimeMillis() 是毫秒;PHP 的 time() 与 Python 的 int(time.time()) 是秒。判断错误时可以在「单位」手动指定。

示例

时间戳 1700000000(秒)在台北时区(UTC+8)是:

2023-11-15T06:13:20+08:00

换成 UTC 则是:

2023-11-14T22:13:20Z

常见问题

为什么换算出来差了 8 小时?

时间戳本身是 UTC。如果程序把它当成 UTC 显示,北京时间就会少 8 小时;反过来,把北京时间当成 UTC 换算,时间戳就会多 8 小时。请确认上方选择的时区,或在日期后面直接写上 +08:00、Z。

纳秒会丢失精度吗?

不会。JavaScript 的数字只能精确表示到约 16 位,19 位的纳秒时间戳直接转换会被改动;本工具以大整数计算,纳秒的每一位都会保留。

可以输入 1970 年以前的时间吗?

可以,1970 年以前的时间戳是负数,例如 -86400 是 1969-12-31 00:00:00 UTC。

2038 年问题是什么?

以 32 位有符号整数存储秒数的系统,最大只能到 2147483647,也就是 2038-01-19 03:14:07 UTC,之后会溢出变成负数。改用 64 位整数或毫秒即可避免。