时间戳转日期先数位数:10 位读作秒、13 位读作毫秒,毫秒除以一千换成秒,再从 1970 年初的 UTC 起点向前推算,按本机时区显示就是答案。
Unix 时间戳在数什么
它数的是从 1970 年 1 月 1 日零时(协调世界时)起流逝的秒数或毫秒数,与时区无关——同一瞬间,北京和纽约服务器的时间戳完全相同。正因不受时区干扰,它是跨系统传递时刻最可靠的格式;而换算出的日期随机器设置变化,这恰是困惑的源头。
10 位还是 13 位:先分清再换算
Java 的 currentTimeMillis 给 13 位毫秒,PHP 的 time 与 Linux 的 date 命令给 10 位秒,同一事件长度各异。把 13 位当 10 位解读,日期会落到五万多年后;反过来则早得离谱。时间戳转换工具 按位数自动识别:输入满 13 位即按毫秒折算、先除以一千,结果区同时回显秒值,便于自查量级。
双向转换与两个输入口
除了时间戳框,页面还有日期时间选择器和秒/毫秒单位下拉:选定年月日与精确到秒的时刻,对应时间戳即时生成,选毫秒得 13 位、选秒得 10 位,配合日志系统的格式要求;「使用当前时间」一键取此刻再手动微调,求「今天 0 点的戳」很顺手。结果同时给出本地时刻与 UTC 表示,一次看全两种口径。
差八小时是怎么来的
国内常见的「转换结果差 8 小时」几乎都出在时区口径混用:时间戳本身是 UTC 时刻,网页按浏览器所在时区(东八区)渲染,若数据库会话时区或服务器配置是另一口径,两边数字自然对不上。核对时先统一表述口径,再比对数字,别怀疑换算本身。
使用技巧
- 先数输入值位数、再看结果年份是否合理,一秒定位量级错误。
- 按天切分日志常用零点边界:把日期拨到 00:00:00 读取生成的秒值。
- 跨机器汇总日志时,把各自时间戳统一转成结果里的 UTC 行再排序,避免本地时区搅局。
- 记录事故现场先点「使用当前时间」,把此刻定格进输入框再复制走。
常见问题
输入 0 为什么显示 1970 年?
这正是 Unix 纪元的定义:时间戳 0 等于 UTC 的 1970 年 1 月 1 日零时,东八区显示为当天早上八点,属于规则而非故障。
时间戳什么时候会变成 11 位?
秒级时间戳要到 2286 年才升级为 11 位,眼下正常秒值都是 10 位;长度异常先怀疑单位串了或多抄一位。
手机上能操作吗?
可以。时间戳框直接输入数字,日期选择器支持拨到秒,显示按手机本地时区,结论与电脑端一致。
小结
与时间戳打交道就两句:先数位数定单位,再定时区看显示,剩下的双向换算交给两个互为镜像的输入框。