点击获取常用时间点的时间戳(本地时区):
快捷偏移计算(基于当前时间):
每行输入一个时间戳(自动识别秒/毫秒):
Unix 时间戳(Unix Timestamp)是从协调世界时(UTC)1970年1月1日00:00:00 起到指定时刻所经过的秒数(或毫秒数)。它是一种跨平台、跨编程语言统一的时间表示方式,不依赖任何时区,因此在数据库存储、API 接口通信、日志记录、缓存过期等场景中被广泛使用。
秒级时间戳为 10 位数字(如 1700000000),毫秒级时间戳为 13 位数字(如 1700000000000)。JavaScript 的 Date.now() 默认返回毫秒级,而 C 语言的 time()、PHP 的 time() 返回秒级。
Unix 时间戳的起点 1970-01-01 00:00:00 UTC 被称为 Unix 纪元(Unix Epoch)。这一约定源于 Unix 操作系统早期的开发(约 1969-1971 年间)。据 Unix 之父 Dennis Ritchie 和 Ken Thompson 回忆,当时选择 1970 年作为起点,是因为它是一个简洁的"整十年",方便人工估算。从此,Unix 系统及衍生系统(Linux、macOS、BSD 等)均以这一时刻作为时间计算的基准。
在 32 位系统中,Unix 时间戳通常使用 32 位有符号整数(int32_t)存储,其最大值为 2147483647,对应 2038年1月19日 03:14:07 UTC。在此时刻之后,整数将发生溢出,时间戳变为负数,系统可能将时间"回拨"到 1901 年,导致软件故障——这就是著名的 2038年问题(也称 Y2K38 问题)。
解决方法是使用 64 位时间戳(int64_t 或 time_t 在 64 位系统上)。64 位时间戳可表示约 2920 亿年的时间范围,足以满足所有实际需求。现代 64 位操作系统和大部分主流编程语言已迁移至 64 位时间戳,但部分嵌入式系统和遗留系统仍需关注此问题。
| 语言 | 秒级时间戳 | 毫秒级时间戳 |
|---|---|---|
| JavaScript | Math.floor(Date.now()/1000) | Date.now() |
| Python | int(time.time()) | int(time.time()*1000) |
| Java | Instant.now().getEpochSecond() | System.currentTimeMillis() |
| PHP | time() | intval(microtime(true)*1000) |
| Go | time.Now().Unix() | time.Now().UnixMilli() |
| C/C++ | time(NULL) | 需自行实现或用 clock_gettime |
| Ruby | Time.now.to_i | Time.now.to_i * 1000 |
| Swift | Int(Date().timeIntervalSince1970) | Int(Date().timeIntervalSince1970 * 1000) |
| SQL (MySQL) | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW(3))*1000 |
| Shell (Bash) | date +%s | date +%s%3N |
本时间戳转换工具支持秒级和毫秒级时间戳的互相转换,以下是详细的使用方法:
时间戳转日期时间:在「时间戳」输入框中输入Unix时间戳(支持10位秒级和13位毫秒级格式,工具会自动识别),选择目标时区(UTC、本地时区或自定义时区),工具会立即转换为标准日期时间格式(YYYY-MM-DD HH:mm:ss),并显示星期几、ISO 8601格式和相对时间描述(如「3小时前」)。
日期时间转时间戳:切换到「日期转时间戳」模式,在日期选择器中选择目标日期时间,工具会自动计算对应的秒级和毫秒级时间戳。你也可以手动输入符合ISO 8601标准的日期字符串(如2024-01-15T08:30:00Z),工具同样会正确解析。
批量转换与时区切换:工具支持批量输入多个时间戳(每行一个),一次性转换所有结果。时区切换功能支持全球主要时区选择,方便跨国团队协作时统一时间标准。转换结果支持一键复制,方便粘贴到日志文件或数据库查询中使用。
Unix时间戳是计算机系统中时间表示的通用语言,以下是几个核心的应用场景:
数据库设计与开发:在MySQL、PostgreSQL、MongoDB等数据库中,使用Unix时间戳存储创建时间、更新时间和过期时间是最常见的做法。相比字符串格式的日期,整数时间戳占用空间更小、排序更快、跨时区一致性更好。开发者在编写SQL查询或ORM代码时,经常需要在时间戳和人类可读日期之间转换。
API接口调试:RESTful API通常使用Unix时间戳传递时间参数(如?from=1700000000&to=1700086400)。后端返回的数据中也常以时间戳形式呈现。前端开发者需要使用本工具将这些时间戳转换为本地日期时间,以便正确展示给用户。
服务器日志分析:Linux系统日志、Nginx/Apache访问日志、应用错误日志中记录的时间通常是Unix时间戳格式。运维人员在进行故障排查时,需要将这些时间戳转换为可读的日期时间,以确定事件发生的具体时刻和先后顺序。
Unix纪元与时间戳起源:Unix时间戳从1970年1月1日00:00:00 UTC(称为Unix Epoch)开始计算,这一设定源于早期Unix操作系统的设计。选择1970年是因为当时32位整数足以覆盖未来数十年的时间范围。然而,32位有符号整数的最大值为2,147,483,647,对应2038年1月19日03:14:07 UTC,这就是著名的「2038年问题」(Y2K38)。现代系统已普遍采用64位整数存储时间戳,可覆盖约2920亿年。
UTC、GMT与本地时间:UTC(协调世界时)是目前全球通用的时间标准,基于原子钟,精度极高。GMT(格林尼治标准时间)是基于天文观测的时间,现已基本被UTC取代。本地时间是根据所在时区对UTC进行偏移后的结果。中国在东八区(UTC+8),因此北京时间比UTC快8小时。本工具支持UTC、本地时区和自定义时区三种模式切换。
闰秒与时钟同步:由于地球自转速度不均匀,国际地球自转服务组织(IERS)会不定期宣布插入「闰秒」来保持UTC与地球自转的同步。闰秒的插入会导致某些分钟内出现61秒。虽然大多数开发者无需关心闰秒,但在设计高精度定时系统(如金融交易、卫星导航)时,必须考虑闰秒对时间计算的影响。
Unix时间戳是从1970年1月1日00:00:00 UTC(Unix纪元)开始所经过的秒数(或毫秒数)。它是跨平台、跨语言统一的时间表示方式,广泛用于数据库存储、API通信、日志记录等场景。
Unix时间戳从1970年1月1日00:00:00 UTC开始计算,这一天被称为Unix纪元(Unix Epoch)。32位有符号整数能表示的最大时间戳为2147483647,对应2038年1月19日03:14:07 UTC。
2038年问题是指使用32位有符号整数存储Unix时间戳的系统,在2038年1月19日03:14:07 UTC之后会发生整数溢出,导致时间回到1901年。解决方法是使用64位时间戳,现代64位系统已不受此问题影响。
秒级时间戳是10位数字(如1700000000),毫秒级时间戳是13位数字(如1700000000000)。JavaScript的Date.now()和getTime()返回毫秒级,而Linux的time()和PHP的time()返回秒级。本工具自动识别并支持两种格式。
Unix时间戳本身没有时区概念,它始终基于UTC。同一个时间戳在全世界任何地方都是相同的值。时区只影响时间戳转换为人类可读日期时间时的显示结果。本工具支持UTC、本地时区和自定义时区切换。
JavaScript中获取毫秒级时间戳用Date.now(),获取秒级时间戳用Math.floor(Date.now()/1000)。也可以用new Date().getTime()或Date.parse(dateString)获取特定时间的时间戳。