Unix时间戳(Unix Timestamp)是指从UTC时间1970年1月1日0时0分0秒(称为"Unix纪元"或"Epoch")起至现在经过的总秒数。这个标准由Unix操作系统首先采用,目前已成为大多数编程语言和操作系统的时间表示基础。
1970年1月1日被选为Unix纪元的起点,是因为Unix系统最初在1960年代末开发,而1970年1月1日是一个便于计算的整数时间点。当时的计算机资源有限,用一个整数来表示时间既简洁又高效。
| 类型 | 长度 | 单位 | 示例 | 常用于 |
|---|---|---|---|---|
| 秒级时间戳 | 10位数字 | 秒 | 1700000000 | Unix/Linux、PHP、Python |
| 毫秒级时间戳 | 13位数字 | 毫秒 | 1700000000000 | JavaScript、Java |
| 时间戳 | 对应时间(UTC) | 说明 |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | Unix纪元起点 |
| 1000000000 | 2001-09-09 01:46:40 | 10亿秒纪念时刻 |
| 1234567890 | 2009-02-13 23:31:30 | 著名的递增数字时间戳 |
| 2147483647 | 2038-01-19 03:14:07 | 32位有符号整数最大值(Y2K38问题) |
Y2K38问题(又称"2038年问题"或"Unix千年虫")是指使用32位有符号整数存储Unix时间戳的系统,在2038年1月19日03:14:07 UTC后将发生整数溢出,导致时间回滚到1901年12月13日。
| 概念 | 说明 |
|---|---|
| UTC | 协调世界时,全球统一的时间标准 |
| GMT | 格林尼治标准时间,与UTC基本等同 |
| CST(中国) | 中国标准时间,UTC+8 |
| 时间戳与时区 | Unix时间戳本身不含时区信息,它总是基于UTC的 |