接口返回了 1700000000,日志里却是 1700000000000,这两个数字可能表示同一个时刻。用宝塔拨测的「时间戳转换」工具,可以把它们转成日期时间,也可以把已知日期转回时间戳。操作前先确认两项:原数据用秒还是毫秒、要按哪个时区查看。

先确认单位和时区

在宝塔拨测的 IT 工具中,进入「编码转换」下的「时间戳转换」。工具顶部有单位和时区选择,两个转换区域共用这组设置。

秒和毫秒相差 1000 倍。对本文这组样例,1700000000 是秒,1700000000000 是毫秒,后者等于前者乘以 1000。平时遇到近期日期,常见的是 10 位秒值、13 位毫秒值,但位数只是线索。更早或更远的日期、其他精度的数据,不能都套用这条判断;优先看接口说明、字段定义或数据来源的单位。

需要手工检查换算时,秒转毫秒是乘以 1000,毫秒转秒则是除以 1000。若毫秒值末尾三位并非全零,除以 1000 后还包含小数部分;只保留整数秒,会丢掉不足一秒的部分。比较两条记录的时间差,也要先把两边统一到同一单位,不能直接拿秒值和毫秒值相减。

先选单位,再粘贴原始数字。 当前工具会按顶部选中的单位解释输入,不会因为填入 13 位数字就自动改成毫秒。

核对北京时间时,把时区选为 Asia/Shanghai。本文配图中显示的就是这个时区,示例浏览器也使用该时区。页面能够切换其他时区,查看结果时要以当前选项为准,不要只凭电脑所在地区判断。

把时间戳转成北京时间

先用秒级样例走一遍:

  1. 顶部单位选择「秒(s)」,时区选择 Asia/Shanghai。
  2. 在「时间戳转日期时间」的输入框中粘贴 1700000000。
  3. 输入后会触发转换,在下方查看结果,无需另找转换按钮。

这时应得到 2023-11-15 06:13:20。需要把日期填入工单或记录时,可以使用该结果右侧的「复制」。

秒单位下输入1700000000,结果为2023-11-15 06:13:20
秒单位下输入1700000000,结果为2023-11-15 06:13:20

顶部「当前时间戳」显示的是不断更新的当前值,与输入框中的固定样例不同。「填入当前」会把当前时间填进输入框;核对历史日志时,直接粘贴日志原值即可,不必使用这个按钮。

13位数字为什么转出了很远的年份?

如果保留「秒(s)」,把 1700000000000 填进去,页面会把整个数字当作秒数,示例结果会变成 55840-11-09 06:13:20。遇到这类明显偏离业务时间的结果,先检查单位。

误把1700000000000按秒转换时,结果年份变为55840
误把1700000000000按秒转换时,结果年份变为55840

将顶部单位改成「毫秒(ms)」,然后重新粘贴原始值 1700000000000,结果就会回到 2023-11-15 06:13:20,与前面的秒级样例一致。

这里的“重新粘贴”不能省略:切换单位时,工具会换算输入框里已有的数值,保留原先表示的时刻。若原值已经按错误单位输入,仅切换选项,输入框中的数字也会变化,结果未必恢复成预期日期。

选择毫秒并重新输入1700000000000,得到与秒级样例相同的日期
选择毫秒并重新输入1700000000000,得到与秒级样例相同的日期

把北京时间转回时间戳

反向转换适合填写接口参数、核对某个操作的发生时间,或者检查上一步是否抄错。

先保持时区为 Asia/Shanghai,单位选「秒(s)」。在「日期时间转时间戳」中,点击日期时间框,选择需要的日期和时分秒;也可以输入完整日期时间并确认。本文使用 2023-11-15 06:13:20,确认后,下方应显示 1700000000。

北京时间2023-11-15 06:13:20反向转换,得到1700000000秒
北京时间2023-11-15 06:13:20反向转换,得到1700000000秒

如果目标接口要求毫秒,把顶部单位切换为「毫秒(ms)」。同一个日期时间会得到 1700000000000。复制前再次核对单位,避免把毫秒值交给只接受秒的字段。

同一北京时间在毫秒单位下,反向输出1700000000000
同一北京时间在毫秒单位下,反向输出1700000000000

时区会影响“这段日期文字代表哪个时刻”。例如这里的 06:13:20 是按北京时间输入的,反向转换也要保持 Asia/Shanghai。如果来源记录使用其他时区,应先按来源时区理解,不能把相同的日期文字直接当成北京时间。

与UTC记录怎样对照?

时间戳表示一个确定的时刻,时区决定这个时刻显示成几点。北京时间是 UTC+8,因此同一组样例可以这样核对:

表示方式 对应值
秒级时间戳 1700000000
毫秒级时间戳 1700000000000
UTC日期时间 2023-11-14 22:13:20
北京时间 2023-11-15 06:13:20

UTC 的晚上 22 点再加 8 小时,已经进入北京时间的第二天。核对时要连同年月日一起看,只比较小时容易漏掉跨日。

只写“2023-11-15 06:13:20”而没有时区的记录,单凭这一段文字无法确定它原本采用哪个时区。与同事交接排查记录时,建议同时写明原始时间戳、秒或毫秒以及查看时区,后续换一台电脑仍能按同样条件复核。

日志若写着 2023-11-14T22:13:20.000Z,末尾的 Z 表示 UTC;带 +08:00 的日期时间则明确写出了东八区偏移。这两种格式看起来不同,仍可能是同一时刻。不要为了显示北京时间,直接给原始时间戳加上 8 小时对应的秒数,那会把实际时刻也改掉。

毫秒输入不等于日期栏显示毫秒

当前日期结果只显示到秒,日期选择区域也提示精确到秒。在毫秒模式下,1700000000123 和 1700000000000 都显示为 2023-11-15 06:13:20,但两者实际相差 123 毫秒。

因此,上面的反向转换只能核对到秒,不能用显示出来的日期恢复原值末尾的 123。排查同一秒内的请求顺序或计算毫秒间隔时,请保留日志中的原始时间戳;不要因为日期结果相同,就认定两条记录发生在完全相同的瞬间。