博客
简体中文

Unix 时间戳转换 — 时间戳与日期在线互转

时间戳与日期互转(秒到纳秒、文本日期、起止时间、代码示例)

在浏览器中处理 · 不上传任何内容

当前 Unix 时间

秒—
毫秒—

—

时区

下方所有转换都按这个时区计算。

时间戳转日期

单位

输入时间戳后,日期会显示在这里。

日期转时间戳

所输入日期对应的时区

在输入框中按上下方向键可加减 1,按住 Shift 则加减 10。把完整的日期粘贴到任意一个框里,会自动填满所有框。时、分、秒留空则为 0。

输入日期后,秒、毫秒、微秒和纳秒时间戳会显示在这里。

年、月、日的起止时间

求出某年、某月或某日的开始时刻和最后一秒的时间戳。有夏令时切换的那天可能长 23 或 25 小时。

输入年份(以及月、日)后,开始和结束的时间戳会显示在这里。

秒数转年、月、日、时、分

把秒数换算成易读的时长。使用平均值:1 年按 365.25 天(31,557,600 秒),1 个月按其十二分之一(2,629,800 秒)计算。

输入秒数后,时长会显示在这里。

时间与秒数对照表

时长秒数
1 分钟60
1 小时3,600
1 天86,400
1 周604,800
1 个月(30 天)2,592,000
1 个月(30.4375 天,平均)2,629,800
1 年(365 天)31,536,000
1 年(365.25 天,平均)31,557,600

Unix 时间不计闰秒,每天固定 86,400 秒。闰秒前后,同一个时间戳可能出现两次,或者时钟看起来停顿一下。JavaScript 的 Date 也遵循同样的规则,无法表示 23:59:60,因此这个工具不接受 60 秒。

在代码中获取当前 Unix 时间

选择一种语言,获取输出当前秒级时间戳(方便时也包括毫秒)的代码片段。

const millis = Date.now();
const seconds = Math.floor(millis / 1000);
console.log(seconds, millis);

功能简介

Unix 时间戳(epoch 时间)用一个数字表示自 1970-01-01 00:00:00 UTC 以来经过的时间。日志、数据库、API 响应和 JWT 的 exp 字段里都能见到它,但很难一眼看出是什么时间。这个工具可以把时间戳转换成易读的日期,也可以把日期转换成时间戳。顶部卡片实时显示当前的秒级和毫秒级 Unix 时间,旁边的卡片用来设置所有转换使用的时区。下方还有年月日的起止时间、秒数转时长、时间与秒数对照表和代码示例。

使用方法

  1. 时间戳转日期:粘贴时间戳。秒、毫秒、微秒和纳秒会自动识别,并显示所选时区的日期、UTC、ISO 8601、RFC 2822、HTTP 日期、相对时间、星期、ISO 周数和当年的第几天。
  2. 日期转时间戳:在“分栏输入”中,分别填写年、月、日、时、分、秒(毫秒可选)。用上下方向键可以调整数值,把完整的日期粘贴到任意一个框里会自动填满所有框,“现在”会填入当前时间。还可以切换 24 小时制或上午/下午,以及 UTC 开关。
  3. 想用选择器?选“日历和时钟选择器”。想直接写文本?选“文本日期”,输入时就会解析。
  4. 年、月、日的起止时间:选择时间段和日期,就能得到开始时刻和最后一秒的时间戳。
  5. 秒数转时长:输入秒数,查看折合成年、月、日、时、分、秒的结果。每个结果旁都有复制按钮。

工作原理

  • 按绝对值判断单位:小于 1e11 为秒,小于 1e14 为毫秒,小于 1e17 为微秒,否则为纳秒。负数表示 1970 年以前。
  • ISO 8601 分别以 UTC(Z)和所选时区的偏移(如 +08:00)显示。输入为微秒或纳秒时,UTC 值会写出 9 位小数。
  • RFC 2822 是带偏移的邮件头格式;HTTP 日期是 Date、Expires 响应头使用的 GMT 格式(RFC 9110)。周数遵循 ISO 8601:每周从周一开始,包含当年第一个周四的那一周是第 1 周。
  • 起止时间:开始是该时区的 00:00:00,结束是下一个时间段的开始减去 1 秒。有夏令时切换的那天长 23 或 25 小时;如果午夜本身被跳过,则使用实际存在的第一个时刻。
  • 时长换算使用平均值:1 年按 365.25 天(31,557,600 秒),1 个月按其十二分之一(2,629,800 秒)计算。
  • 被夏令时跳过的当地时间会报错,出现两次的时间取较早的那一次。

示例

输入 识别为 UTC 日期
0 秒 1970-01-01T00:00:00.000Z
1700000000 秒 2023-11-14T22:13:20.000Z
1700000000123 毫秒 2023-11-14T22:13:20.123Z
1700000000123456 微秒 2023-11-14T22:13:20.123456000Z
1700000000123456789 纳秒 2023-11-14T22:13:20.123456789Z

同一个 1700000000,北京时间是 2023-11-15 06:13:20(+08:00)。时区设为 Asia/Shanghai 时,Oct 4, 2026 3:05 PM 对应 1791097500;在首尔则是 1791093900。

补充说明

  • 两份日志里的时间戳对不上时,先检查单位和时区。一边是秒、一边是毫秒的情况非常常见。
  • JavaScript 的 Date.now() 返回毫秒,而大多数 Unix 工具和数据库的 UNIX_TIMESTAMP() 返回秒。页面底部的代码示例给出了各语言的写法。
  • 在 America/New_York 这类实行夏令时的时区,春季被跳过的时间会提示为不存在。

常见问题

怎么区分秒、毫秒、微秒和纳秒?

按绝对值判断:小于 1e11 为秒,1e11 到 1e14 为毫秒,1e14 到 1e17 为微秒,1e17 及以上为纳秒。每个分界点都是同一时刻(按较粗的单位是 5138 年,按下一级更细的单位是 1973 年),所以日常日期不会落在重叠区间。遇到特殊的值,比如用毫秒表示的 1973 年以前的日期,请手动选择单位。纳秒值超过 2^53,因此用 BigInt 精确计算。

把日期转成时间戳时用哪个时区?

你输入的年、月、日、时、分、秒会被当作所选时区的当地时间,按下 UTC 按钮则按 UTC 计算。同样是 2024-01-01 09:00:00,北京时间和 UTC 相差 28,800 秒(8 小时)。如果文本日期自带偏移或时区,例如 +08:00、Z 或 [Asia/Shanghai],则以文本中的为准。

文本日期框能识别哪些格式?

ISO 8601/RFC 3339(2026-10-04T15:05:00+08:00)、RFC 9557(末尾用方括号写时区)、RFC 5322(Sun, 04 Oct 2026 15:05:00 +0800)、HTTP-date,以及用英文或韩文书写的日期,如 Oct 4, 2026 3:05 PM、4 October 2026。2026/10/04 这样的数字写法也可以。暂不支持“2026年10月4日”这种中文写法,请改用 2026/10/04 15:05。识别出的格式会显示在下方,失败时会给出原因。

这个工具会受 2038 年问题影响吗?

不会。有符号 32 位整数会在 2038-01-19 溢出,而这个工具使用 JavaScript 数字,能处理到大约公元 275760 年的日期。至于你要把这个值交给的系统是否使用 32 位,那是另一个问题。

闰秒怎么处理?

Unix 时间不计闰秒,每天固定 86,400 秒,闰秒前后同一个时间戳可能出现两次。JavaScript 的 Date 也遵循同样的规则,无法表示 23:59:60,因此这个工具不接受 60 秒。

我输入的内容会发送到服务器吗?

不会。所有计算都使用浏览器内置的 Date、Intl 和 BigInt,不上传任何内容。

没找到想要的工具?