时间与日期
Unix 时间戳转换器
把Unix时间戳转换成易读的UTC和本地日期时间,或把一个日期转回纪元时间戳。
Unix时间戳计数自1970年1月1日UTC以来的整秒数。如果你的值有13位,它是毫秒,先除以1000。
Unix时间如何转换成日期
Unix时间戳是自UTC 1970年1月1日00:00:00(即纪元)以来经过的秒数。要把它变成日期,计算器除以86,400(一天的秒数)得出是哪一天,再用余数求出小时、分钟和秒,全部以UTC衡量。例如1,700,000,000秒是2023年11月14日22:13:20 UTC。反向转换时,它计数从纪元到你输入的日期时间的整秒数。闰秒被忽略,这与几乎所有操作系统和数据库存储该值的方式一致。
结果以UTC和你浏览器的本地时间显示,如果你比格林尼治快或慢许多小时,两者可能落在不同的日历日。ISO 8601一行(例如2023-11-14T22:13:20Z)是无歧义的书面形式,末尾的Z表示Zulu,即UTC。
| 时间戳(秒) | UTC 日期时间 | 说明 |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | 纪元 |
| 1000000000 | 2001-09-09 01:46:40 | 十亿秒 |
| 1700000000 | 2023-11-14 22:13:20 | 示例值 |
| 2147483647 | 2038-01-19 03:14:07 | 32位有符号上限 |
秒、毫秒与2038年问题
最常见的错误是把秒和毫秒搞混。多数后端系统存储秒,但JavaScript的Date.now()和许多日志使用毫秒,它大1,000倍,对当前日期而言有13位而非10位。如果转换出的日期落在遥远的未来,你很可能把一个毫秒值粘进了秒字段。把时间戳存为有符号32位整数的系统,会在UTC 2038年1月19日03:14:07耗尽空间,即表中所示的那个点;这就是2038年问题,现代系统用64位整数避开它,把上限推到大约2920亿年之外。
常见问题
Unix时间戳是秒还是毫秒?
按惯例是自1970年以来的整秒。毫秒被JavaScript和某些API使用,大1,000倍,所以当前的值有13位而非10位。除以1,000即得秒。
Unix时间戳用什么时区?
它本身没有时区;它标记UTC中的单一瞬间。同一个时间戳在世界各地显示为不同的钟表时间,这就是本工具同时显示UTC和你本地时间的原因。
什么是2038年问题?
存为有符号32位整数的时间戳会在2,147,483,647秒即2038年1月19日溢出。此后它会回绕成负数。64位整数在任何实际意义上都消除了这个上限。