在线时间戳与日期互转 · 毫秒/秒级精度 · 开发者必备
| 时间点 | 秒级时间戳 | 日期时间 |
|---|---|---|
| Unix 纪元起点 | 0 | 1970-01-01 00:00:00 UTC |
| 千禧年 | 946684800 | 2000-01-01 00:00:00 UTC |
| 北京奥运会开幕 | 1218192000 | 2008-08-08 12:00:00 UTC |
| 2020年1月1日 | 1577836800 | 2020-01-01 00:00:00 UTC |
| 2025年1月1日 | 1735689600 | 2025-01-01 00:00:00 UTC |
| 2030年1月1日 | 1893456000 | 2030-01-01 00:00:00 UTC |
| 2100年1月1日 | 4102444800 | 2100-01-01 00:00:00 UTC |
Unix 时间戳(Unix Timestamp)是一种广泛使用的时间表示方式,定义为自 1970年1月1日 00:00:00 UTC(称为 Unix 纪元或 Unix Epoch)起经过的秒数(或毫秒数)。这种时间表示法最初由 Unix 操作系统引入,现已成为互联网、数据库、编程语言和各类系统中的标准时间格式。
核心特点:Unix 时间戳是一个纯数字,不涉及时区信息,因此在跨时区、跨语言的数据交换中具有天然优势。无论您身处北京、纽约还是伦敦,同一个时间戳代表的都是同一个绝对时间点。
1753208580。适用于大多数 Web 开发、API 接口和日志记录场景。1753208580000。JavaScript 的 Date.now() 默认返回毫秒级时间戳,适用于需要更高精度的场景。1753208580000000。部分数据库(如 MySQL、PostgreSQL)和系统日志使用微秒级精度。TIMESTAMP、MongoDB 的 ISODate 底层均以时间戳形式存储。EXPIRE、JWT Token 的 exp 字段均基于时间戳计算。Date.now() 返回毫秒级;Math.floor(Date.now() / 1000) 返回秒级。import time; time.time() 返回秒级浮点数;int(time.time() * 1000) 返回毫秒级。time() 返回秒级;microtime(true) 返回带微秒的浮点数。System.currentTimeMillis() 返回毫秒级;Instant.now().getEpochSecond() 返回秒级。time.Now().Unix() 返回秒级;time.Now().UnixMilli() 返回毫秒级。Date.now() 或 process.hrtime.bigint() 获取纳秒级高精度时间。Unix 时间戳本身不包含时区信息,它表示的是自 UTC 纪元起经过的时间。当需要将时间戳转换为人类可读的日期时间字符串时,才需要指定目标时区。例如,同一个时间戳 1753208580:
因此,在跨时区协作或处理国际化应用时,建议始终使用 UTC 时间戳进行数据存储和传输,仅在展示层根据用户所在时区进行本地化转换。
32位有符号整数能表示的最大时间戳为 2147483647,对应 2038年1月19日 03:14:07 UTC。超过此值后,32位系统上的时间戳将发生溢出回绕,导致时间显示错误。现代系统已普遍采用64位整数存储时间戳,可安全表示到数十亿年之后,但部分嵌入式设备和遗留系统仍需关注此问题。