时间戳转换
Unix 时间戳与可读时间互转,多时区支持
关于时间戳转换
Unix 时间戳是从 1970-01-01 00:00:00 UTC 起经过的秒数(或毫秒数),是程序里最常用的时间表示方式。它本身不带时区信息,需要配合时区才能显示成本地时间——这也是跨国协作时最容易出错的地方。10 位是秒级,13 位是毫秒级,两者差 1000 倍,混用会导致时间偏差几十年。
使用步骤
- 输入时间戳(10 位秒或 13 位毫秒,工具自动识别)
- 选择要对照的时区,默认同时显示 UTC 与北京时间
- 也可以反向操作:选好日期时间,转成时间戳
- 复制结果到日志、数据库或接口参数里
常见错误
秒和毫秒混用
把 13 位毫秒当秒解析会得到几万年后的日期,反之则回到 1970。接口联调时先确认单位。
以为时间戳自带时区
时间戳只是绝对时刻,显示成几点取决于用哪个时区格式化。存储用 UTC,展示转本地,是最稳的约定。
忽略夏令时
部分海外服务器会切夏令时,按“固定差 8 小时”心算会在半年内对不上,以工具输出的时区结果为准。
常见问题
为什么同一条日志里的时间和我看到的不一样?
服务器通常运行在 UTC 时区。查看时请把时区切到 UTC 对一遍,或直接加上 8 小时换算成北京时间。
2038 年问题是什么?
32 位有符号整数最大约 21 亿秒,对应 2038-01-19。使用 64 位存储或在系统层面迁移到 64 位时间戳即可避免。
怎么区分秒和毫秒时间戳?
看位数:10 位是秒(约到 2286 年),13 位是毫秒。混用是最常见的 bug——把毫秒传给只认秒的接口,时间会跑到五万年后。工具里两种都认,会按位数自动判断。
能一次转换一整列吗?
能,粘贴多行时间戳会逐行输出。日志排查时特别省事:把 grep 出来的时间戳列整段贴进来,直接得到可读时间。每行独立处理,不会因为中间一行格式不对就整体失败。
转换结果是按哪个时区显示的?
同时给出 UTC 和你的本地时区,因为这两个最容易被混淆。服务器日志默认 UTC,你看到的「时间对不上」多半就是这个原因。要看别的时区,用「时区转换」工具填 IANA 名称更准。
来源:内置实现 · License: MIT · 分类:效率
相关阅读
安全、快捷、开源工具及资源
无需安装、无需注册、无需命令行 —— 挑一个工具,填参数,出结果。