什么是 纪元时间?

纪元时间(也称为 Unix 时间、POSIX 时间或纪元秒)是一种时间表示系统,将时间点表示为自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数(不计闰秒)。

快速了解

全称Unix Epoch 时间
创建时间1970 年(Unix 操作系统)
规范文档官方规范

工作原理

Unix Epoch 是在 20 世纪 70 年代初贝尔实验室开发 Unix 系统时选择的一个方便的参考点。Epoch 时间提供了一种简单、明确的方式,将历史上的任何时刻表示为单个数字。这使得计算机非常适合存储、传输和比较时间。虽然原始的 32 位有符号整数表示将在 2038 年溢出(Y2K38 问题),但现代系统使用 64 位整数,可以表示数十亿年后的日期。

主要特点

  • 计算自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数
  • 提供通用的、与时区无关的时间戳
  • 简单的整数格式,便于存储和比较
  • 32 位系统将在 2038 年面临溢出(Y2K38 问题)
  • 负值表示纪元之前的时间
  • 变体包括毫秒(13 位)和纳秒(19 位)

常见用途

  1. 在数据库中存储时间戳
  2. API 通信中的时间数据
  3. 计算事件之间的时间差
  4. 跨分布式系统同步时钟
  5. 日志文件时间戳和事件排序

示例

loading...
Loading code...

常见问题

为什么选择 1970 年 1 月 1 日作为 Unix 纪元?

1970 年 1 月 1 日是在贝尔实验室开发 Unix 时选择的一个方便的整数日期。它足够近以便用于当代时间戳,同时又足够久远以表示大多数相关日期。

什么是 2038 年问题(Y2K38)?

Y2K38 问题发生是因为存储 Unix 时间戳的 32 位有符号整数将在 2038 年 1 月 19 日 03:14:07 UTC 溢出。使用 32 位时间的系统将回绕到负值,表示 1901 年的日期。现代系统使用 64 位整数来避免此问题。

秒级和毫秒级纪元时间有什么区别?

秒级纪元时间是 10 位数字(如 1704067200),而毫秒级是 13 位数字(如 1704067200000)。毫秒级为计时事件提供更高精度。JavaScript 的 Date.now() 返回毫秒值。

如何将纪元时间转换为可读日期?

在 JavaScript 中:new Date(epochSeconds * 1000).toISOString()。在 Python 中:datetime.fromtimestamp(epoch_seconds)。在 Bash 中:date -d @epoch_seconds。请记住在 JavaScript 中处理秒时需要乘以 1000。

纪元时间能表示 1970 年之前的日期吗?

是的,1970 年 1 月 1 日之前的日期用负的纪元值表示。例如,1969 年 12 月 31 日 23:59:59 UTC 的纪元秒值为 -1。这允许在 32 位系统中表示回溯到 1901 年 12 月的历史日期。

相关工具

相关术语

相关文章