mikaio.dev/freetools

Unix 时间戳转换器

输入 Unix 时间戳以将其转换为可读日期,或选择一个日期以将其转换为 Unix 时间戳。

UTC 日期和时间:
您当地时间:

Unix时间戳:

将 Unix 时间戳转换为人类可读的日期

开发人员、数据库管理员以及使用日志文件或 API 的任何人都会经常遇到 Unix 时间戳——像 1700000000 这样的长数字,代表一个时间点。如果没有转换器,这些数字对大多数人来说毫无意义。该工具可立即将任何 Unix 时间戳转换为可读的日期和时间,并将任何日期转换回其 Unix 时间戳。

什么是 Unix 时间戳?

Unix 时间戳计算自 1970 年 1 月 1 日午夜(协调世界时 (UTC))以来经过的秒数。这个时刻被称为 Unix 纪元,被选为 Unix 操作系统开发的参考点。每过去一秒,计数就会加一。时间戳 0 正好代表 UTC 时间 1970 年 1 月 1 日的午夜。时间戳 1700000000 表示 2023 年 11 月 14 日 22:13:20 UTC。

Unix 时间戳的优点在于它们与时区无关。无论您身在世界何处,时间戳都代表完全相同的时刻。当转换为当地时间时,相同的时间戳在东京和纽约产生不同的时钟读数,但它们指的是相同的物理时刻。

如何使用转换器

要将时间戳转换为日期,请将时间戳数字粘贴到上方字段中。 UTC 日期和时间以及您当地的等效日期和时间都会立即显示。要将日期转换为时间戳,请使用下部的日期选择器,相应的时间戳会立即出现。

毫秒与秒

某些系统,特别是 Web 浏览器和 JavaScript 应用程序,使用毫秒而不是秒作为时间戳。 JavaScript Date.now() 调用会返回类似 1700000000000 的结果——这个数字比等效的 Unix 时间戳(以秒为单位)大大约 1000 倍。如果您的数字长度大约为 13 位,则可能以毫秒为单位:除以 1000 并输入结果。

2038年问题

早期的 Unix 系统将时间戳存储为 32 位有符号整数,最多可容纳 2,147,483,647 的值。该最大值对应于 2038 年 1 月 19 日 03:14:07 UTC。以 32 位整数存储时间戳的系统将在该日期溢出,这个问题有时称为 Y2K38。现代 64 位系统可以存储远远超过 2920 亿年的时间戳,这使得这个问题只出现在尚未更新的遗留软件中。

常见用途

时间戳出现在日志文件、数据库记录、API 响应、缓存标头、加密证书和无数其他上下文中。将它们转换为可读日期有助于调试、数据分析、合规性审核以及任何需要了解事件发生时间的情况。

为什么选择1970年作为起点

选择1970年1月1日本质上是一个实际的日期,而不是一个本身有意义的日期。 Unix 是在 20 世纪 60 年代末和 1970 年代初在贝尔实验室开发的,设计者需要一个足够新的参考点来保持数字的可管理性,但又足够早以覆盖操作系统可能的生命周期。四舍五入到 1970 年初非常方便。几十年后,这种任意选择已经深深嵌入:它是几乎所有编程语言、数据库和操作系统如何在内部表示时间的基础,尽管大多数程序员从来不需要直接考虑它。

无需转换器即可读取时间戳

通过一些练习,您可以在头脑中检查时间戳的完整性。除以 31,536,000(普通年份的秒数)即可得出自 1970 年以来的大致年数——例如,以 1.7 开头的十位时间戳大约对应于 2023 年,自 1970 年以来加上大约 53-54 年。这种粗略的心理估计是一种有用的方法,可以发现明显错误的时间戳,例如在您使用计算器之前,因为它实际上以毫秒为单位而相差 1000 倍的时间戳。

负时间戳

由于 Unix 时间戳只是从纪元开始的有符号秒数,因此 1970 年 1 月 1 日之前的日期表示为负数而不是不受支持。例如,时间戳 -86400 正好代表纪元前一天:1969 年 12 月 31 日。此转换器以与正值相同的方式处理负值,这对于处理早于计算时代但仍以 Unix 时间戳形式存储的历史记录或数据非常有用。

为什么时间戳与时区无关

将时刻存储为 Unix 时间戳而不是格式化日期字符串的最大优点是它在存储和计算过程中完全避开时区。时间戳准确地代表一个物理时刻,并且仅在向人显示时才转换为本地日历日期和时钟时间。这就是为什么数据库、API 和日志文件绝大多数存储时间戳而不是预先格式化的本地日期:不同时区的两台服务器可以完全放心地比较、排序和计算时间戳之间的差异,并且只需要在最后一步转换为人类可读的本地时间,就像此转换器在并排显示 UTC 和本地等效时间时所做的那样。

使用时间戳进行调试

开发人员在调试时不断使用这样的转换器。标有 1700000000 的服务器错误日志乍一看毫无意义,但转换它会立即告诉您错误是在工作时间、夜间还是在部署退出的确切时刻发生——这通常是将错误报告与导致错误的更改关联起来的最快方法。 API 响应、数据库审核列和缓存过期标头通常都存储时间戳而不是格式化日期,原因与存储引擎更喜欢它们的原因相同:简单的数字可以正确排序、比较和计算,没有区域设置或格式歧义,并且只需要在最终显示步骤中转换为人类友好的日期,这正是该工具所做的工作。

私人

一切都使用 JavaScript 的内置 Date 对象在浏览器中运行,因此双向转换都是即时的,并且您输入的时间戳或日期不会发送到服务器、记录或共享。

Unix 时间戳常见问题解答

什么是 Unix 时间戳?
Unix 时间戳是一个数字,表示自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来经过的秒数。它在计算中普遍用于表示没有时区歧义的时间点。
2038年问题是什么?
将 Unix 时间戳存储为 32 位有符号整数的旧系统只能表示 2038 年 1 月 19 日之前的日期。现代 64 位系统没有此限制。
如何转换毫秒?
有些系统使用毫秒而不是秒。将毫秒时间戳除以 1000 将其转换为秒,然后再在此处输入。