Unix时间戳转换器
在Unix时间戳与可读日期之间即时互换
Unix 时间戳转换器
在 Unix 时间戳和日期之间互相转换
Unix 时间戳转换器
输入 Unix 时间戳(秒)
公式
日期 = new Date(时间戳 × 1000)什么是Unix时间戳?
Unix时间戳(也称纪元时间或POSIX时间)是自1970年1月1日00:00:00 UTC(Unix纪元)以来经过的秒数。它是编程、数据库、API和系统日志中表示日期和时间的通用标准。由于只是一个数字,它与时区无关,便于在任何编程语言或操作系统中存储、排序和比较。
本转换器可即时将任意Unix时间戳转换为人类可读的日期和时间(显示为本地时间),也可将任意日期/时间转换回Unix时间戳。同时支持JavaScript的Date.now()使用的毫秒时间戳——超过10位的数值将自动识别为毫秒精度时间戳并进行相应处理。
如何使用Unix时间戳转换器
- 在输入框中输入Unix时间戳(例如1700000000),将其转换为可读的日期和时间。
- 或输入日期和时间,将其转换为Unix时间戳。
- 点击转换查看结果。
- 毫秒时间戳将自动识别——若您的数值超过10位,工具将其视为毫秒(如JavaScript的Date.now()所用)。
公式与参考
Unix时间戳 = 自1970-01-01 00:00:00 UTC以来的秒数
当前时间戳(近似值):
~1,700,000,000 (2023年11月)
~1,745,000,000 (2025年4月)
JavaScript:
Date.now() // 毫秒
Date.now() / 1000 // 秒(浮点数)
Math.floor(Date.now() / 1000) // 整数秒
时间戳转日期(JavaScript):
new Date(timestamp * 1000).toISOString()
2038年问题:
32位有符号整数最大值 = 2,147,483,647
= 2038年1月19日 03:14:07 UTCUnix时间戳始终以UTC表示。向用户显示时,需转换为本地时间。JavaScript的Date对象内部使用毫秒,因此将Unix时间戳(秒)传入new Date()时需乘以1000;将Date.now()转换回秒时需除以1000。
实际案例
时间戳0 — Unix纪元起点
数值0对应1970年1月1日00:00:00 UTC——Unix时间的起始点,即Unix纪元。所有时间戳都相对于这一时刻计算。
时间戳1,000,000,000 — 十亿秒里程碑
2001年9月9日01:46:40 UTC。这是开发者社区庆祝的重要里程碑——Unix时间达到十亿秒的时刻。全球部分系统还举办了倒计时活动。
时间戳1,700,000,000 — 2023年11月
约2023年11月14日。可用于验证近期时间戳的合理性。如果您看到一个约17亿的时间戳,它对应的是2023年前后的日期。
常见问题
为什么Unix时间从1970年1月1日开始?▾
Unix系统在20世纪70年代初开发时,工程师需要一个固定参考点。1970年1月1日00:00:00 UTC被选为一个实用且整洁的起始日期,略早于Unix系统本身,使其成为计算整个Unix历史时间的干净纪元。
什么是2038年问题?▾
许多旧系统将Unix时间戳存储为有符号32位整数,最大值为2,147,483,647,对应2038年1月19日03:14:07 UTC。超过这个时间点后,32位计数器将溢出并变成一个很大的负数,可能导致崩溃或日期错误。现代系统使用64位整数,在数百亿年内不会遇到此问题。
秒时间戳和毫秒时间戳有什么区别?▾
标准Unix时间戳以秒为单位计算纪元以来的时间(例如1700000000)。JavaScript的Date.now()返回毫秒(例如1700000000000——多三个零)。从毫秒换算为秒,除以1000;在JavaScript的new Date()中使用秒时间戳,需乘以1000。本转换器会自动将超过10位的数值识别为毫秒时间戳。
Unix时间戳受时区影响吗?▾
不受影响。Unix时间戳代表UTC的绝对时刻,完全与时区无关。相同的时间戳值在全球任何地方都代表相同的时刻。时区转换只在向用户显示时间戳时发生——底层数字本身不会改变。
负数Unix时间戳是什么意思?▾
负数Unix时间戳代表Unix纪元之前的日期——即1970年1月1日00:00:00 UTC之前。例如,-86400对应1969年12月31日00:00:00 UTC(纪元前一天)。负时间戳是合法的,大多数现代系统和编程语言都支持它们。