时间戳转换
Unix 时间戳与人类日期双向转换:10 位秒、13 位毫秒、16 位微秒、19 位纳秒自动识别(也可手动指定),UTC 与本地时间同时显示,附星期与 2038 年溢出提示。页面顶部实时显示当前时间戳,全部在浏览器本地完成。
看日志、对接口、查数据库,时间戳无处不在:10 位秒级、13 位毫秒级最常见,16 位微秒、19 位纳秒也偶有出现。本工具自动识别位数(也可手动指定),双向转换,UTC 与本地时间同时显示,附星期与 2038 年溢出提示,页面顶部还有实时跳动的当前时间戳。
两个实用提醒:一是位数识别——13 位是毫秒,直接除以 1000 就是秒;二是 2038 问题——32 位系统的 time_t 在 2038-01-19 03:14:07 UTC 溢出,老系统(32 位嵌入式、旧数据库字段)存 2038 年后的时间会出错,本工具对超出范围的输入会明确提示。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 粘时间戳(10/13/16/19 位自动识别),或输入日期反向生成。
- 看 UTC 与本地时间两行结果,附星期几。
- 接近 2038-01-19 的时间戳留意溢出提示。
- 页面顶部实时显示当前时间戳,抓包对表直接抄。
计算原理与示例
Unix 时间戳是什么
Unix 时间戳是从 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数,不含闰秒。JavaScript、Java 等语言常用毫秒级(13 位),10 位秒级则见于各种日志与数据库。
秒、毫秒、微秒怎么区分
时间戳 1000000000 对应 2001-09-09 01:46:40 UTC(北京时间 09:46:40,星期日);1234567890 对应 2009-02-13 23:31:30 UTC。位数决定单位:≤10 位按秒、13 位按毫秒、16 位按微秒、19 位按纳秒。
时区与时间戳换算
日期转时间戳注意时区口径:2026-09-11 00:00:00 按 UTC 是 1789104000,按东八区则是 1789056000,相差 8 小时。结果可一键复制秒值或毫秒值。
代码示例
JavaScript 秒与毫秒互转
const sec = Math.floor(Date.now() / 1000); // 10 位秒
const ms = Date.now(); // 13 位毫秒
new Date(sec * 1000).toISOString(); // 秒 → ISO
new Date(ms).toLocaleString("zh-CN", { hour12: false });
// 13 位判断:> 1e12 即毫秒(2286 年前的秒级时间戳不会到 13 位)
Python time 与 datetime 互转
import time
from datetime import datetime, timezone
ts = int(time.time()) # 10 位秒
datetime.fromtimestamp(ts) # 本地时间
datetime.fromtimestamp(ts, tz=timezone.utc) # UTC
datetime(2026, 9, 15, 12, 0).timestamp() # 日期 → 秒
# 毫秒:int(time.time() * 1000);解析毫秒除以 1000 再传
常见问题
10 位和 13 位时间戳怎么区分?
数位数:10 位是秒级(如 1789056000 ≈ 2026-09),13 位是毫秒级(如 1789056000000)。JavaScript 的 Date.now() 和 Java 的 System.currentTimeMillis() 返回毫秒,Unix date +%s 与 MySQL UNIX_TIMESTAMP() 返回秒。本工具按位数自动识别,也可手动指定。
2038 年问题是什么?
很多老系统用 32 位有符号整数存秒级时间戳,最大值 2147483647 对应 2038-01-19 03:14:07 UTC,下一秒就会溢出变成负数。现代 64 位系统不受影响,但嵌入设备、老数据库字段可能中招。本工具在结果超出 32 位范围时会给出提示。
时间戳有时区吗?
时间戳本身是绝对时刻,没有时区概念;时区只影响「显示成什么日期时间」。同一时间戳在 UTC 下显示 01:46,在北京时间下显示 09:46。日期转时间戳时必须说明口径:本工具日期转时间戳支持 UTC 与本地时区两种口径,差 8 小时就是这个原因。
Unix 时间戳是怎么定义的?
定义为「从 1970-01-01 00:00:00 UTC 起经过的秒数」,且不计闰秒。因为它基于 UTC,同一时刻在任何时区的时间戳都相同,只有显示成本地日期时才需要加上时区偏移。
怎么把时间戳转成可读日期?
秒级时间戳先乘 1000 得到毫秒,再用日期函数转换:JavaScript 用 new Date(ms),PHP 用 date('Y-m-d', ts),Python 用 datetime.fromtimestamp。务必区分秒与毫秒,搞错会差出一千倍。
数据库里该存时间戳还是日期时间?
各有场景:时间戳是整数,比较排序快、无时区歧义,适合记录精确时刻;DATETIME / TIMESTAMP 字段可读性好、便于按日期分组统计。多数系统的做法是存时间戳或 UTC 时间,展示时再按用户时区格式化。
为什么时间戳会有 16 位甚至 19 位?
因为单位不同:10 位是秒、13 位是毫秒、16 位是微秒、19 位是纳秒。JavaScript 使用毫秒(13 位),部分接口会返回微秒或纳秒。识别办法是看位数,或用「是否大于 1e12」判断是否为毫秒级。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。