时间戳转换
Unix 时间戳是从 1970-01-01 00:00:00 UTC(称为 epoch)起走过的时间,用数字表示,常见有秒和毫秒两种。程序里存的是这串数字,人想看的却是年月日时分秒——这页负责把两边对上,并帮你分清 10 位是秒、13 位是毫秒。
日志里的 1700000000 想知道是几点、接口要传毫秒而你手上只有秒、前端拿到毫秒对方却要秒——填错单位会差出一千倍:把秒当毫秒解会落在 1970 附近,把毫秒当秒会跑到五万年后。
时间戳转日期会同时给出本地、ISO、UTC 三种写法方便对照;选好日期后会给对应的秒和毫秒。顶部还有一秒一跳的当前时间戳,点一下就能填进下面的框。
怎么用
- 用实时时钟顶部「当前秒级时间戳」「当前毫秒时间戳」两个数字每秒刷新,点右侧「填充为当前」把此刻的秒级值填进下方输入框、同时把日期框设为当前本地时间。
- 时间戳转日期在「时间戳 → 日期」卡输入框(占位「输入时间戳数字」)填数字,单位选「自动 / 秒 / 毫秒」。自动按位数判断:绝对值不小于 1e12、或整数位超过 10 位当作毫秒,否则当秒。
- 读三种输出解析成功后结果区列出本地、ISO、UTC 三行;输错或无法解析会显示红字「无法解析该时间戳」。
- 日期转时间戳在「日期 → 时间戳」卡用日期选择器(占位「选择日期时间」)选一个本地时间,下面立刻给出「秒」和「毫秒」两行。
示例
1700000000(单位选「秒」)
ISO 2023-11-14T22:13:20.000Z · UTC Tue, 14 Nov 2023 22:13:20 GMT
ISO 和 UTC 都是 0 时区的绝对时刻;「本地」那行会按你所在时区显示不同的时分。
深入一点
秒还是毫秒:位数是第一线索
在 2020 年代,秒级时间戳是 10 位、毫秒是 13 位。13 位当秒会算成公元五万年后,10 位当毫秒会落在 1970 年初。拿不准就选「自动」,也可手动锁定「秒」或「毫秒」。
位数只是线索不是铁证,极端数值仍要盯着单位看;实在拿不准就把两档都试一下,哪一个落在合理年份就用哪一个。
本地时间和 UTC 差的是时区
同一个时间戳,本地行按设备时区显示、ISO 与 UTC 行固定是 0 时区。中国是 UTC+8,本地会比 UTC 早 8 小时。对服务器日志用 UTC,给人看用本地。
想把一个 UTC 时刻对上本地,就记一句:本地等于 UTC 加时区偏移;中国偏移是正八小时,所以零时区的晚上十点一刻,本地是次日早上六点一刻。
日期 → 时间戳按本地时区解释
你在选择器里填的时间被当作设备本地时间再换算成 UTC 毫秒,所以换一台不同时区的设备、同样的输入会得到不同的时间戳。要精确对齐就连时区一起确认。
跨时区协作时,把时间戳发出去比发一串本地时刻更保险,接收方能按自己的时区还原出同一个绝对瞬间,不会因谁的表快八小时而对不上。
注意事项
- 全部在浏览器本地计算,读取的是设备的当前时间和时区。
- 「当前时间戳」用的是浏览器时钟,设备时间不准它就不准。
- 日期选择器精度到秒,不含毫秒手填;需要特定毫秒值请从时间戳方向输入。
- 超出 Date 可表示范围(约公元 ±27 万年)的极端数字会解析失败。
- ISO 那行以 Z 结尾代表零时区;本地那行不带时区标记,读的时候别把两种写法当成同一回事。
- 日期选择器接受的是本地时间,内部再换算成零时区存储,所以显示的时间戳已含你所在时区的偏移。