Loading...
Loading...
免费的在线 Unix 时间戳转换器——时间戳与可读日期互转。实时时钟显示当前纪元时间。
Unix 时间戳(又称 Epoch 时间)是指从 1970 年 1 月 1 日(UTC 午夜)开始所经过的秒数。它是一种简单、通用的时间表示方式,没有时区歧义。Unix 时间戳广泛应用于 API、数据库、日志文件和编程语言中,作为标准的时间表示形式。
大多数编程语言和数据库在内部将时间存储为 Unix 时间戳。JavaScript 使用自纪元以来的毫秒数(Date.now()),而 PHP、Python 和大多数数据库使用秒。在时间戳和可读日期之间转换是开发、调试和数据分析中的常见任务。
时区为时间戳的解释增加了复杂性。一个 Unix 时间戳全局表示同一时刻,但其可读含义因时区而异。例如,时间戳 1717200000 是 2024-06-01 00:00:00 UTC,但在上海(UTC+8)是 2024-06-01 08:00:00。始终以 UTC 存储和传输时间戳,仅在显示时转换为本地时间。
常见的时间戳应用场景包括:验证令牌是否过期(检查时间戳是否在过去)、记录带精确时间的事件、调度未来的操作、测量性能(两个时间戳之间的耗时),以及在分布式系统中同步数据——其中每个节点可能存在轻微的时钟差异。
此工具提供两种转换模式:时间戳转日期将 Unix 秒转换为格式化的日期字符串;日期转时间戳将日期时间输入转回 Unix 秒。当前时间戳的实时显示可帮助你快速获取当前纪元时间,用于代码或 API 调用。
时间戳对事件日志记录和审计追踪至关重要。在分布式系统中,使用 NTP(网络时间协议)同步服务器时钟,确保所有服务的时间一致。测量耗时请使用单调递增时钟而非墙钟时间戳,后者可能因 DST 变化或 NTP 修正而向后跳变。这样可以防止日志和数据库中出现负时间间隔和乱序事件等问题。
许多系统使用有符号 32 位整数存储时间戳,该值将在 2038 年 1 月 19 日溢出(自纪元起 2,147,483,647 秒)。现代系统使用 64 位整数或无符号类型避免此问题。所有主流平台(Linux 64 位、Node.js、Python 3)已不受 2038 年问题影响。
JavaScript 的 Date.now() 返回自纪元以来的毫秒数(千分之一秒),而非秒。要获取 Unix 秒,需除以 1000 并取整:Math.floor(Date.now() / 1000)。许多 JavaScript API(如 JWT 过期时间)期望以秒为单位,这是常见 bug 的来源。
技术上讲,UTC 是基于原子钟的时间标准,而 GMT 是基于太阳时的时区。在实际计算中,两者可互换使用。它们都代表相同的参考时间,没有夏令时调整。
最佳实践:所有时间戳以 UTC 存储,仅在显示时转换为本地时间。接受用户输入时,始终先转换为 UTC 再存储。使用 date-fns-tz 或 Luxon 等库进行时区感知的格式化。
Unix 时间戳是自 1970-01-01 UTC 以来的秒数,是绝对时间点。日期时间是包含年、月、日、时、分、秒组件的可读格式,可能包含也可能不包含时区。时间戳无歧义,适合存储和比较;日期时间最适合显示和用户输入。
JavaScript:Math.floor(Date.now() / 1000)。Python:int(time.time())。PHP:time()。Java:System.currentTimeMillis() / 1000L。Go:time.Now().Unix()。大多数语言都提供类似的单行代码——关键注意点是期望秒还是毫秒。