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 时间,旁边的卡片用来设置所有转换使用的时区。下方还有年月日的起止时间、秒数转时长、时间与秒数对照表和代码示例。
使用方法
- 时间戳转日期:粘贴时间戳。秒、毫秒、微秒和纳秒会自动识别,并显示所选时区的日期、UTC、ISO 8601、RFC 2822、HTTP 日期、相对时间、星期、ISO 周数和当年的第几天。
- 日期转时间戳:在“分栏输入”中,分别填写年、月、日、时、分、秒(毫秒可选)。用上下方向键可以调整数值,把完整的日期粘贴到任意一个框里会自动填满所有框,“现在”会填入当前时间。还可以切换 24 小时制或上午/下午,以及 UTC 开关。
- 想用选择器?选“日历和时钟选择器”。想直接写文本?选“文本日期”,输入时就会解析。
- 年、月、日的起止时间:选择时间段和日期,就能得到开始时刻和最后一秒的时间戳。
- 秒数转时长:输入秒数,查看折合成年、月、日、时、分、秒的结果。每个结果旁都有复制按钮。
工作原理
- 按绝对值判断单位:小于 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,不上传任何内容。