← 退出

时间戳转换

Unix 时间戳与日期互转

2026/10/13 18:14:43 · 2026-10-13T10:14:43.000Z
1791886483 (秒) · 1791886483000 (毫秒)

关于时间戳转换

这个工具在 Unix 时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 起算的秒数或毫秒数)和人能读懂的日期时间之间互相转换。页面分成两块:上面输入时间戳,下面显示对应的本地时间和 UTC 标准格式;下面选择日期时间,显示对应的秒级和毫秒级时间戳。它只做这两种转换,不支持自定义输出格式、不支持选择其他时区、也不做日期加减或时间差计算。显示的「本地时间」取决于你设备当前的时区设置。

操作步骤

  1. 在「Unix 时间戳(秒或毫秒)」输入框里填入数字,页面打开时已经自动填入当前时刻的秒级时间戳。点旁边的「现在」按钮可以重新取当前时刻。
  2. 紧接着下方的结果框会立刻显示转换结果,格式是「本地时间 · ISO 格式」,例如「2023/11/15 06:13:20 · 2023-11-14T22:13:20.000Z」。ISO 部分末尾的 Z 表示 UTC 时间。
  3. 要反向转换,在「日期时间」选择框里选一个日期和时间(这是浏览器自带的 datetime-local 控件)。
  4. 它下面的结果框会显示「秒数 (秒) · 毫秒数 (毫秒)」两个数值,可以按需要复制其中一个。内容无法解析时会显示「无效时间戳」或「无效日期」。

一个实际例子

输入 1700000000(10 位),工具把它当作秒,得到 UTC 时间 2023-11-14T22:13:20.000Z;如果你的设备时区是北京时间(UTC+8),本地时间显示为 2023/11/15 06:13:20。输入 1700000000000(13 位)会被当作毫秒,得到完全相同的时刻。反向转换:在时区为 UTC+8 的设备上选择 2024-01-01 00:00:00,得到 1704038400 (秒) 和 1704038400000 (毫秒);而同样的 2024-01-01 00:00:00 如果在 UTC 时区的设备上选择,则得到 1704067200 (秒),两者正好相差 8 小时(28800 秒)。所以在不同时区的设备上,同一个日期会得到不同的时间戳,这是正常现象,因为日期选择框的内容按设备本地时区理解。以上数字都是用同样的 Date 逻辑实际运行得到的。

支持范围与已知限制

  • 秒和毫秒是靠整数部分的数字位数来区分的:超过 10 位数字就当作毫秒,否则当作秒(首尾空格和负号不计入位数)。因此 10 位以内按秒处理(可以表示到 2286 年左右),11 位及以上按毫秒处理。像 99999999999 这样的 11 位数字会被当成毫秒,得到 1973 年的日期,而不是遥远的未来。
  • 首尾空格会被忽略,负号也不计入位数,所以 1700000000(末尾带空格)和负的 10 位秒数如 -1700000000 都会正确按秒处理。
  • 输入必须是纯数字(可带负号和小数点)。带小数的秒时间戳(如 1700000000.123)会保留毫秒部分;夹杂字母的内容(如 123abc)会显示「无效时间戳」。
  • 只能显示设备本地时区和 UTC 两种结果,不能指定东京、纽约等其他时区。
  • 日期时间选择框的精度取决于浏览器控件,通常到分钟,有的浏览器可以到秒。反向转换时得到的秒数是向下取整后的整秒。
  • 页面首次打开时,「日期时间」框里预填的是设备本地时区的当前时间。
  • 不处理闰秒,JavaScript 的时间戳本身就不包含闰秒。

常见问题:时间戳是 10 位还是 13 位?

传统 Unix 时间戳(C、Python 的 time.time()、数据库的 UNIX_TIMESTAMP)是秒,当前通常是 10 位;JavaScript 的 Date.now()、Java 的 System.currentTimeMillis() 是毫秒,当前通常是 13 位。工具按长度自动判断,不需要手动切换。如果你拿到的是 16 位的微秒或 19 位的纳秒时间戳,需要先自行除以 1000 或 1000000 再输入,否则结果会变成非常遥远的年份。

常见问题:为什么我的结果和别的网站差了几个小时?

差的几乎总是时区。时间戳本身与时区无关,它指向唯一的一个时刻;只是「本地时间」那一栏会按你设备当前的时区显示。想核对时,看带 Z 的 ISO 部分——那是 UTC,不受设备时区影响,和其他工具的 UTC 结果应当一致。

常见问题:能不能转换 1970 年之前的日期?

日期反向转换可以得到负数时间戳。但时间戳转日期方向要小心前面提到的长度判断,负号会占一个字符。对于绝对值很小的负数,比如 -86400,长度没超过 10,可以按秒正常处理;对于 10 位数字的负秒数则会被当成毫秒,需要自行换算。

常见问题:「无效时间戳」是什么意思?

意思是输入的内容不是纯数字(含字母或其他符号),或者数值大到超出 JavaScript 能表示的日期范围(约正负 1 亿天,即公元前 271821 年到公元 275760 年)。清空输入框或者点击「现在」可以恢复。

隐私与处理方式

转换完全在浏览器本地完成,只使用 JavaScript 自带的 Date 对象。代码里没有向任何服务器发送你输入的时间戳或日期的请求,也不保存历史。「现在」按钮读取的是你设备自己的系统时钟,因此如果设备时间不准,得到的结果也会不准。