时间戳转换

秒/毫秒/微秒↔日期/多时区

422 次访问

当前时间戳 · 实时刷新

0
秒级 · 北京时间

时间戳 ↔ 日期 双向转换

世界多时区对照

基于当前时间戳,14 个常用时区同步显示(高亮 = 你的本地时区)

批量时间戳 → 日期

说明

· Unix 时间戳:自 UTC 1970-01-01 00:00:00 起的秒数。10 位 = 秒级,13 位 = 毫秒级,16 位 = 微秒级,自动识别。

· 浏览器本地时区为 ,转换默认按本地时区显示,对照表同时给出 UTC 与全球 13 个常用时区。

· JS 原生 Date.now() 返回毫秒级,后端常用秒级,注意 × 1000 / 1000 换算。

· 2038 年问题:32 位有符号 int 时间戳最大值 = 2147483647(2038-01-19 03:14:07 UTC)。老系统未升级到 64 位将溢出,需用 BigInt 或换 64 位实现。

关于本工具

了解工具定位 · 使用场景 · 对比优势

输入秒、毫秒或微秒时间戳,立即转为可读的日期时间,并支持多时区显示。开发者调试接口、数据分析师处理日志、运维排查问题时,无需手动计算或切换时区。所有转换在浏览器内完成,数据不上传服务器。

使用场景

🐛

日志排错定位

后端开发者在排查线上问题时,日志里全是 1696492800 这样的 Unix 时间戳。手动换算容易出错,尤其秒与毫秒混用时(1696492800000 对应不同日期)。本工具支持秒 / 毫秒 / 微秒三种精度自动识别,输入后直接显示对应 UTC 与东八区时间,省去心算步骤,快速定位异常时间点。

📡

API 联调测试

前端工程师对接第三方 API 时,返回的 created_at 字段是毫秒级时间戳。需要确认该时间戳是否准确对应预期日期,以及时区转换是否一致。本工具可同时输入多个时间戳(秒 / 毫秒 / 微秒混合),一键输出各时区日期,避免因单位混淆导致的联调返工。

🗓️

跨时区会议确认

跨国团队约会议时,A 成员在 UTC+8 给出北京时间 15:00,B 成员在 UTC-5 需要换算。本工具输入日期时间后,可同时查看多个时区的对应时间戳,确保各方看到的是同一个时刻。不再因时区换算错误而错过会议。

🕹️

游戏活动排期

游戏运营策划限时活动时,后台配置的是 Unix 时间戳(秒级)。需要验证配置的 start_time 和 end_time 是否准确落在目标日期范围,避免活动提前开启或延迟结束。本工具输入时间戳后直接显示日期时间,快速校验配置是否正确。

🔐

Token 过期验证

安全工程师在检查 JWT Token 的 exp 字段时,拿到的是一个毫秒级时间戳。需要确认该时间戳是否确实在未来,以及精确到秒的剩余有效期。本工具支持微秒级精度,可精确判断 Token 是否已过期,避免因精度误判导致的安全漏洞或误封。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (timestamp-converter.com)传统方法 (手动计算)
数据隐私纯浏览器,零上传上传到服务器处理完全本地,无网络依赖
时区支持多时区同时显示(UTC/本地/自定义)仅支持 UTC 和本地时区需手动查时区偏移表
精度单位秒/毫秒/微秒三档切换仅秒和毫秒仅秒级(手动换算易错)
批量处理单次输入,逐条转换支持批量粘贴多行时间戳逐条手工计算,无批量能力
离线可用完全离线(PWA 缓存后)需联网完全离线
处理速度即时(< 0.1 秒)1-3 秒(含网络延迟)数分钟(含查表和计算)
收费免费,无隐藏付费免费,但含广告免费(仅需纸笔)

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在输入框中粘贴秒、毫秒或微秒数值,支持整数与小数
  2. 点击「转换」按钮,或按回车键立即执行转换
  3. 查看结果区:左侧显示 UTC 时间,右侧显示本地时间及日期
  4. 点击时区下拉菜单,选择其他时区(如 Asia/Shanghai)查看对应时间
  5. 点击结果行旁的「复制」图标,将转换后的日期时间复制到剪贴板

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
17000000002023-11-14 22:13:20 UTC+8典型场景:秒级 Unix 时间戳转北京时间
17000000000002023-11-14 22:13:20.000 UTC+8典型场景:毫秒级时间戳(13 位)
01970-01-01 08:00:00 UTC+8边界 case:Unix 纪元起点(1970-01-01 UTC)
21474836472038-01-19 11:14:07 UTC+8边界 case:32 位有符号整数最大值
99999999999992286-11-20 17:46:39.999 UTC+8边界 case:13 位毫秒时间戳最大值
2023-11-14 14:13:201700000000 (秒) | 1700000000000 (毫秒)易错 case:输入日期字符串,自动识别无时区
1700000000.52023-11-14 22:13:20.500 UTC+8易错 case:带小数秒(毫秒精度)

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 毫秒当秒输入

错误
1690000000
修复
1690000000000

Unix 时间戳标准单位是秒;但 JavaScript 的 Date.now() 返回毫秒,直接复制粘贴会导致日期偏离 1970 年

2. 忽略时区偏移

错误
输入 1690000000 期望得到 2023-07-22 08:00:00 但工具显示 2023-07-22 00:00:00
修复
确认工具显示的是 UTC 还是本地时区;多时区工具需手动选择目标时区

时间戳本身无时区;同一时间戳在不同时区显示不同日期时间,工具默认输出 UTC 或浏览器本地时区

3. 负时间戳前导零或空格

错误
 -86400
修复
-86400

带前导空格或零会被部分解析器视为非法或截断;严格解析要求符号紧接数字,无空格

4. 混淆秒与毫秒的精度

错误
输入 1690000000.123 期望得到毫秒级日期
修复
输入 1690000000123

时间戳转换工具通常按整数处理;小数秒需先乘以 1000 转为毫秒整数再输入

5. 日期格式不符合 ISO 8601

错误
07/22/2023 08:00:00
修复
2023-07-22T08:00:00Z

工具解析日期时依赖标准格式;美式月/日/年会被误解析为日/月/年,导致日期错误

6. 把微秒当毫秒输入

错误
输入 1690000000000 期望得到微秒级日期但显示毫秒级
修复
输入 1690000000000000

微秒是毫秒的 1000 倍;若工具默认毫秒,输入微秒值会得到错误的未来日期

7. 忽略闰秒

错误
假设 2016-12-31 23:59:60 对应时间戳 1483228799
修复
1483228800

Unix 时间戳忽略闰秒;POSIX 标准规定一天固定 86400 秒,闰秒不反映在时间戳中

8. 时区缩写误用

错误
输入 CST 期望中国标准时间(UTC+8)
修复
明确选择 Asia/Shanghai 或 UTC+8

CST 同时代表中国标准时间、美国中部时间、古巴标准时间;工具应使用 IANA 时区标识符避免歧义

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

T = t / 1000

变量说明

  • T — Unix 时间戳(秒)
  • t — 毫秒数

示例

已知毫秒时间戳 1700000000000,转换为秒:T = 1700000000000 / 1000 = 1700000000 秒。对应 UTC 时间 2023-11-15 00:53:20。

适用范围

适用于 Unix 时间戳(1970-01-01 00:00:00 UTC 起)的秒/毫秒/微秒互转。不适用于非 Unix 纪元(如 Windows FILETIME)或闰秒处理场景。

原理图

输入时间戳秒 / 毫秒 / 微秒选择时区UTC / 本地 / 自定义输入日期时间年-月-日 时:分:秒浏览器内计算JavaScript 本地运算展示结果日期 ↔ 时间戳 双向转换浏览器内计算JavaScript 本地运算展示结果多时区日期时间浏览器内计算JavaScript 本地运算展示结果对应时间戳
用户输入 浏览器本地计算 输出结果

开发者集成

3 种主流语言 · 复制即用

from datetime import datetime, timezone

# 秒级时间戳 → UTC 日期时间
ts = 1718000000
dt = datetime.fromtimestamp(ts, tz=timezone.utc)
print(dt.isoformat())  # 2024-06-10T10:13:20+00:00

# 毫秒级时间戳 → UTC 日期时间
ms_ts = 1718000000123
dt = datetime.fromtimestamp(ms_ts / 1000, tz=timezone.utc)
print(dt.isoformat())  # 2024-06-10T10:13:20.123000+00:00

# 日期时间 → 秒级时间戳
dt = datetime(2024, 6, 10, 10, 13, 20, tzinfo=timezone.utc)
ts = int(dt.timestamp())
print(ts)  # 1718000000

# 日期时间 → 毫秒级时间戳
ms_ts = int(dt.timestamp() * 1000)
print(ms_ts)  # 1718000000000

# 微秒级时间戳(Python 3.12+ 支持)
us_ts = 1718000000123456
dt = datetime.fromtimestamp(us_ts / 1_000_000, tz=timezone.utc)
print(dt.isoformat())  # 2024-06-10T10:13:20.123456+00:00
package main

import (
	"fmt"
	"time"
)

func main() {
	// 秒级时间戳 → UTC 日期时间
	var ts int64 = 1718000000
	dt := time.Unix(ts, 0).UTC()
	fmt.Println(dt.Format(time.RFC3339)) // 2024-06-10T10:13:20Z

	// 毫秒级时间戳 → UTC 日期时间
	msTs := int64(1718000000123)
	dt = time.UnixMilli(msTs).UTC()
	fmt.Println(dt.Format(time.RFC3339Nano)) // 2024-06-10T10:13:20.123Z

	// 微秒级时间戳 → UTC 日期时间
	usTs := int64(1718000000123456)
	dt = time.UnixMicro(usTs).UTC()
	fmt.Println(dt.Format(time.RFC3339Nano)) // 2024-06-10T10:13:20.123456Z

	// 日期时间 → 秒级时间戳
	dt = time.Date(2024, 6, 10, 10, 13, 20, 0, time.UTC)
	ts = dt.Unix()
	fmt.Println(ts) // 1718000000

	// 日期时间 → 毫秒级时间戳
	msTs = dt.UnixMilli()
	fmt.Println(msTs) // 1718000000000

	// 日期时间 → 微秒级时间戳
	usTs = dt.UnixMicro()
	fmt.Println(usTs) // 1718000000000000
}
// 秒级时间戳 → 日期时间(本地时区)
const ts = 1718000000;
const dt = new Date(ts * 1000);
console.log(dt.toISOString()); // 2024-06-10T10:13:20.000Z

// 毫秒级时间戳 → 日期时间
const msTs = 1718000000123;
const dtMs = new Date(msTs);
console.log(dtMs.toISOString()); // 2024-06-10T10:13:20.123Z

// 微秒级时间戳 → 日期时间(JS 精度限制,微秒部分会丢失)
const usTs = 1718000000123456;
const dtUs = new Date(usTs / 1000);
console.log(dtUs.toISOString()); // 2024-06-10T10:13:20.123Z

// 日期时间 → 秒级时间戳
const dt2 = new Date('2024-06-10T10:13:20Z');
const ts2 = Math.floor(dt2.getTime() / 1000);
console.log(ts2); // 1718000000

// 日期时间 → 毫秒级时间戳
const msTs2 = dt2.getTime();
console.log(msTs2); // 1718000000000

// 日期时间 → 微秒级时间戳(JS 精度限制,微秒部分为 0)
const usTs2 = dt2.getTime() * 1000;
console.log(usTs2); // 1718000000000000

常见问题

7 个高频疑问

我输入一个 13 位数字,为什么转换出来是 1970 年的日期?
13 位数字通常是毫秒级时间戳,1970-01-01 00:00:00 是 Unix 时间戳的起点(0 毫秒)。如果转换结果落在 1970 年初,说明输入的数字本身很小(比如 1000 毫秒 = 1 秒,就是 1970-01-01 00:00:01),不是工具转换错误。检查一下输入的数字是否来自你系统或 API 返回的完整时间戳(通常 10 位秒级 / 13 位毫秒级),而不是截断后的片段。
为什么同一个时间戳,在这个工具和另一个工具转出来的日期差 8 小时?
差 8 小时通常是时区问题。Unix 时间戳本身是 UTC 时间(0 时区),转换时如果工具默认显示 UTC 时间,而另一个工具自动加了东八区(北京时间),结果就会差 8 小时。本工具在输入框下方有「时区选择」下拉菜单,默认 UTC,可以手动切换为「Asia/Shanghai」或其他时区。如果转换后日期对不上,先确认两边用的时区是否一致。
我有一串 10 位数字,但转换后日期是 2001 年,是不是工具不准?
10 位数字是秒级时间戳,2001-09-09 09:46:40 对应 1000000000 秒(10 亿秒),这是正常的。如果期望的是近期日期(比如 2024 年),但输入的是 10 位数字,说明这个数字本身是 2001 年附近的时间戳,不是工具不准。可以检查一下时间戳的来源:如果是 JavaScript 的 Date.now() 返回的是 13 位毫秒,如果是 Unix 命令行 date +%s 返回的是 10 位秒。
微秒和纳秒的时间戳怎么输入?工具支持吗?
支持。输入框自动识别数字位数:10 位以内按秒处理,13 位按毫秒,16 位按微秒,19 位按纳秒。如果输入 16 位数字(如 1234567890123456),工具会按微秒转换,显示对应的日期和剩余微秒数。注意:浏览器 JavaScript 的 Number 类型精度有限,16 位以上数字会丢失精度,但本工具内部用 BigInt 处理,确保 19 位纳秒级转换准确。
输入负数时间戳会怎么样?比如 -3600?
负数时间戳表示 1970-01-01 之前的日期。本工具支持负时间戳输入(秒/毫秒/微秒均可),例如 -3600 秒(1 小时前)会转换为 1969-12-31 23:00:00 UTC。注意:浏览器原生 Date 对象不支持 1970 年之前的日期,但本工具用自定义算法处理,可正确转换到 1901 年之前的日期。如果输入负值后显示「无效日期」,检查一下是否误加了正号或空格。
这个工具在手机上用方便吗?会不会很卡?
所有计算在浏览器本地完成,不依赖网络,手机端响应速度和电脑端一样快。输入框和时区选择器适配了触屏操作,输入数字后自动转换,无需点击按钮。如果手机浏览器较旧(如 iOS 12 以下 Safari),BigInt 可能不支持,此时微秒/纳秒转换会降级为毫秒精度。建议升级到最新版浏览器以获得完整功能。
为什么我把一个日期字符串(比如 2024-01-01 12:00:00)粘贴进去,工具不识别?
本工具只接受数字时间戳输入(秒/毫秒/微秒/纳秒),不支持直接输入日期字符串。如果需要将日期转换为时间戳,可以使用同一页面的「日期→时间戳」反向转换功能(通常在输入框下方有切换按钮)。如果粘贴的日期字符串中包含非数字字符(如斜杠、冒号、空格),工具会忽略并提示「请输入有效数字」。
选择 打开 +新窗口 esc关闭