什么是 Unix时间戳?
Unix时间戳(也称为 Unix 纪元时间或 POSIX 时间)是一种将时间表示为自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来累计秒数的系统。它提供了一种简单、与时区无关的方式来表示特定时刻。
快速了解
| 全称 | Unix 纪元时间 |
|---|---|
| 创建时间 | 1970 年(随 Unix 操作系统一起) |
| 规范文档 | 官方规范 |
工作原理
Unix 时间戳在 20 世纪 70 年代初随 Unix 操作系统一起引入。它将时间表示为单个整数,便于存储、比较和计算时间差。传统的 Unix 时间戳使用有符号的 32 位整数,将在 2038 年 1 月 19 日溢出(Y2K38 问题)。现代系统使用 64 位整数来扩展这个范围。毫秒和微秒精度的变体分别将基础时间戳乘以 1000 或 1000000。
主要特点
- 计算自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数
- 与时区无关的时间表示
- 简单的整数格式,易于存储和比较
- 32 位系统面临 Y2K38 溢出问题
- 毫秒精度使用 13 位时间戳
- 负值表示 1970 年之前的日期
常见用途
- 数据库时间戳存储
- API 请求/响应时间戳
- 日志文件时间戳
- 计算时间差和持续时间
- 跨时区时间同步
示例
Loading code...常见问题
什么是 Unix 纪元,为什么使用 1970 年 1 月 1 日?
Unix 纪元是 Unix 时间戳的参考点 - 1970 年 1 月 1 日 00:00:00 UTC。这个日期是在 Unix 于 20 世纪 70 年代初在贝尔实验室开发时选择的。这是当时一个方便的近期日期,可以在覆盖可预见的未来的同时最小化存储需求。32 位有符号整数格式可以表示 1901 年到 2038 年的日期。
如何将 Unix 时间戳转换为人类可读的日期?
在 JavaScript 中:对于秒使用 new Date(timestamp * 1000),对于毫秒使用 new Date(timestamp)。在 Python 中:datetime.fromtimestamp(timestamp)。在 PHP 中:date('Y-m-d H:i:s', timestamp)。大多数编程语言都有内置的转换函数。请记住 Unix 时间戳是 UTC 时间,因此你可能需要根据本地时区进行调整。
什么是 Y2K38 问题,它如何影响 Unix 时间戳?
Y2K38 问题(2038 年问题)发生是因为传统的 32 位有符号 Unix 时间戳将在 2038 年 1 月 19 日 03:14:07 UTC 溢出。在这一时刻之后,时间戳会回绕到一个表示 1901 年 12 月的负数。现代系统使用 64 位整数,将范围扩展到数十亿年。大多数当前软件和数据库已经过渡到 64 位时间戳。
Unix 时间戳应该使用秒还是毫秒?
传统的 Unix 时间戳使用秒(10 位数字),但 JavaScript 和许多现代 API 使用毫秒(13 位数字)。根据你的需求选择:秒对于大多数应用程序(如日志记录和调度)来说已经足够。毫秒为性能测量或需要亚秒精度时提供更细的粒度。始终记录你的系统使用哪种格式以避免混淆。
如何获取当前的 Unix 时间戳?
在 JavaScript 中:Math.floor(Date.now() / 1000) 获取秒,或 Date.now() 获取毫秒。在 Python 中:import time; int(time.time())。在 PHP 中:time()。在 Bash 中:date +%s。在 SQL(MySQL)中:UNIX_TIMESTAMP()。所有这些都返回当前 UTC 时间的 Unix 时间戳,与本地时区设置无关。