时间与日期

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 日期时间说明
01970-01-01 00:00:00纪元
10000000002001-09-09 01:46:40十亿秒
17000000002023-11-14 22:13:20示例值
21474836472038-01-19 03:14:0732位有符号上限

秒、毫秒与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位整数在任何实际意义上都消除了这个上限。