13位时间戳转换时间:输入13得到的结果
把 13 作为 13位时间戳转换时间的输入时,结果并不是“13 秒”,而是 13 毫秒,对应的 UTC 时间是 1970-01-01 00:00:13,ISO 写作 1970-01-01T00:00:13.000Z。这个结论来自毫秒字段 13000 与 unix 字段 13 的对应关系,说明 13 位时间戳转换时间时,数值本身按毫秒解释,而秒级数值需要再换算。
在线工具时间戳转换
计算结果与含义
输入参数 13 后,转换结果包含四部分:unix 为 13,milliseconds 为 13000,iso 为 1970-01-01T00:00:13.000Z,utc 为 1970-01-01 00:00:13。这里的 milliseconds 是 13000,也就是 13 秒对应的毫秒数;而 unix 字段 13 表示的是秒数。两者放在一起看,13 作为 13 位时间戳转换时间的输入时,最终落到 UTC 时间轴上的位置是 1970 年 1 月 1 日 0 时 0 分 13 秒。ISO 字符串末尾的 .000Z 表示毫秒部分为 0,Z 表示 UTC 时区。
计算步骤:逐步代入参数 13
第一步,读取输入值 13。第二步,按毫秒解释该数值,得到 milliseconds = 13000。第三步,把 13000 毫秒换算为秒,得到 unix = 13。第四步,以 Unix 纪元 1970 年 1 月 1 日 0 时 0 分 0 秒为起点,向前推进 13 秒,得到 UTC 时间 1970-01-01 00:00:13。第五步,写成 ISO 格式就是 1970-01-01T00:00:13.000Z。如果需要在浏览器里核对同一组字段,可以使用 时间戳转换 工具输入 13 观察 unix、milliseconds、iso、utc 四个输出是否一致。
相邻参数对照说明
把 13 与相邻输入放在一起,更容易看清毫秒与秒的对应。输入 12 时,milliseconds 为 12000,utc 为 1970-01-01 00:00:12;输入 14 时,milliseconds 为 14000,utc 为 1970-01-01 00:00:14。可以看到,输入每增加 1,milliseconds 相应增加,UTC 秒数增加 1。输入 673 时,milliseconds 为 673000,utc 为 1970-01-01 00:11:13,已经跨过 11 分钟;输入 3613 时,milliseconds 为 3613000,utc 为 1970-01-01 01:00:13,跨过 1 小时。负数方向也有对照:输入 -647 时,utc 为 1969-12-31 23:49:13;输入 -3587 时,utc 为 1969-12-31 23:00:13。这些对照都说明,13 位时间戳转换时间时,数值单位是毫秒,而不是秒。
常见应用场景
13 位时间戳常见于 JavaScript 的 Date.now()、Java 的 System.currentTimeMillis()、PHP 的 microtime(true) 取整等场景。当接口返回 13 位数值时,直接把它当作秒数会得到错误日期;按毫秒解释后,13 会得到 1970-01-01 00:00:13。排查时可以把 13 与 12、14 做对照,确认边界是否按毫秒递增。需要补充语言侧概念时,可参考 php13位时间戳转换的教程:从13位数值到可读日期、13位时间戳转换北京时间python:从毫秒到本地时间 或 13位时间戳转换java:从准备到排查的教程。
反向换算与注意事项
反向换算时,如果已知 UTC 时间 1970-01-01 00:00:13,可以先得到秒数 13,再按毫秒单位展开得到 milliseconds 13000。注意不要混淆 unix 与 milliseconds 两个字段:unix 是 13,milliseconds 是 13000。另外,13 位时间戳转换时间得到的是 UTC 基准,显示本地时间时还需要加上时区偏移;ISO 字符串 1970-01-01T00:00:13.000Z 中的 Z 就表示 UTC。若输入为负数,例如 -647 或 -3587,结果会落在 1969-12-31,说明时间戳可以表示纪元之前的时间。
总结
13 作为 13位时间戳转换时间的输入时,按毫秒解释得到 milliseconds 13000、unix 13,对应 UTC 时间 1970-01-01 00:00:13,ISO 为 1970-01-01T00:00:13.000Z。对照 12、14 以及 673、3613 等输入,可以确认毫秒与秒的递增关系。
相关文章
- jq13位时间戳转换成日期:参数结果核对
说明参数13按Unix秒转换后的UTC日期,并区分数值13与13位毫秒时间戳。
- jq12位时间戳转换成日期:12 对应哪一刻?
参数 12 按 Unix 时间戳换算,对应 1970-01-01 00:00:12(UTC),毫秒数为 12000。本文说明结果含义、换算步骤与相邻参数对照。
- jdk8将时间戳转换成instant:8秒的转换结果
在JDK8中把时间戳8转换为Instant,结果是1970-01-01T00:00:08Z,对应UTC时间00:00:08,毫秒值8000。
- java时间戳转换日期格式14位:先分清秒与毫秒
从14位时间戳的位数困惑讲起,用实例说明秒与毫秒的差别,并给出Java格式化日期与排查错误的做法。
- java时间戳转换成时间6:从参数6看懂秒级换算
以参数6为例,讲清Java时间戳换算成时间的思路:秒与毫秒的区别、UTC与本地时区、边界值与常见报错排查。
常见问题
Q113位时间戳转换时间时,输入 13 为什么不是 13 秒?
因为 13 位时间戳按毫秒解释。输入 13 后,milliseconds 为 13000,unix 为 13,UTC 为 1970-01-01 00:00:13。也就是说,13 本身是毫秒数,13000 毫秒才等于 13 秒。
Q2输入 13 和输入 14 的结果差多少?
输入 13 的 milliseconds 是 13000,utc 是 1970-01-01 00:00:13;输入 14 的 milliseconds 是 14000,utc 是 1970-01-01 00:00:14。两者相差 1 秒。
Q3输入 13 得到的 ISO 字符串是什么?
ISO 字符串是 1970-01-01T00:00:13.000Z。其中 .000 表示毫秒部分为 0,Z 表示 UTC 时区。
Q413 位时间戳转换时间遇到负数怎么理解?
负数表示 Unix 纪元之前的时间。例如输入 -647 得到 1969-12-31 23:49:13,输入 -3587 得到 1969-12-31 23:00:13,都落在 1969 年 12 月 31 日。