什么是 Unix 时间戳转换器?
Unix 时间戳(也叫 epoch 时间)指的是从 UTC 时间 1970 年 1 月 1 日 00:00:00 起所经过的秒数,且不计入闰秒。这个工具能把这串整数转换成人类可读的 UTC 日历日期和时间,并附带显示星期几。
使用方法
以秒为单位粘贴或输入一个 Unix 时间戳(例如 1700000000),然后提交即可。计算器会返回 UTC 时间下的年、月、日、时、分、秒,外加星期几以及自 epoch 起的原始天数。
计算公式详解
首先将秒数拆分:\(\text{Days} = \left\lfloor \text{ts} / 86400 \right\rfloor\),余数则对应当天的具体时刻。
$$\begin{gathered} \text{Days} = \left\lfloor \frac{\text{Timestamp}}{86400} \right\rfloor, \qquad s = \text{Timestamp} \bmod 86400 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Hour} &= \left\lfloor \frac{s}{3600} \right\rfloor \\ \text{Minute} &= \left\lfloor \frac{s \bmod 3600}{60} \right\rfloor \\ \text{Second} &= s \bmod 60 \\ (\text{Y},\text{M},\text{D}) &= \text{civil}(\text{Days}) \end{aligned} \right. \end{gathered}$$随后,再用 Howard Hinnant 那套广为人知的整数算法「days_from_civil」的逆运算,把天数映射为公历日期。该算法巧妙地将一年的起点提前到 3 月,让闰日落在年末,从而免去了各种特殊情况的处理。星期几则通过 \((\text{Days} + 4) \bmod 7\) 求得,因为 1970 年 1 月 1 日恰好是星期四。
实例演算
以 \(\text{ts} = 1{,}700{,}000{,}000\) 为例:\(\text{Days} = 19675\),余数 \(= 72800\) 秒 \(= 22{:}13{:}20\)。公历日期算法将第 19675 天映射为 2023-11-14。因此最终结果为 2023-11-14 22:13:20 UTC。
常见问题
它会考虑时区吗? 不会,输出结果始终为 UTC 时间。如需换算成本地时间,请加上你所在地区的 UTC 时差(例如中国大陆为 UTC+8)。
毫秒怎么处理? 请只输入秒数。如果你手上的是毫秒级时间戳,先除以 1000 再输入。
为什么不处理闰秒? 按照定义,Unix 时间本身就忽略闰秒,因此本转换器也不做处理。