UTC
-
将 Unix 时间戳转换为日期,或反向转换。支援秒与毫秒、同时显示 UTC 与本地时间,全部在浏览器内完成。
在你的浏览器中运行
Unix 时间戳记录的是自 1970-01-01 00:00:00 UTC(称为 epoch,纪元)以来经过的秒数。 它本身不带时区信息:同一个瞬间在世界任何地方的时间戳都相同。正因如此,系统内部多半以 这种方式储存时间,只在显示给人看时才转换成当地历法。
这是「日期跑到 1970 年」这类错误最常见的来源。各平台采用的单位并不一致:
| 来源 | 单位 | 2025 年的时间戳长这样 |
|---|---|---|
Unix date +%s、PostgreSQL、Go、Python time.time() | 秒 | 1754438400 |
JavaScript Date.now()、Java System.currentTimeMillis() | 毫秒 | 1754438400000 |
最快的判断方式是看位数。以现在的时间而言,秒为单位是 10 位数,毫秒为单位则是 13 位数。把毫秒值喂给预期收到秒的程序,日期会落在西元 57000 年左右;反过来则会停在 1970 年 1 月。
date +%s # shell,秒
Date.now() // 毫秒
Math.floor(Date.now() / 1000) // 秒
import time; int(time.time())
SELECT EXTRACT(EPOCH FROM NOW()); -- PostgreSQL
若系统以 有号 32 比特整数 储存时间戳,数值会在 2147483647 溢位,也就是
2038-01-19 03:14:07 UTC。届时计数器翻转为负数,日期会跳回 1901 年。现代 64 比特平台
不受影响,但这个问题仍会出现在嵌入式固件、较旧的文件格式,以及宣告为 32 比特的数据库
栏位中。
时间戳本身是绝对的,但你把它转换成的日期不是。本工具同时显示 UTC 与浏览器的本地时间; 只要你的时区偏移不为零,两者就会不同,有时甚至差整整一天。当你拿转换结果和另一个系统 比对时,请先确认双方使用同一个时区,再判断是不是真的有错。
转换只是在你的浏览器里做算术,你输入的内容不会传送到任何地方。