时间戳转换器:Unix 时间戳与日期互转完全指南
什么是 Unix 时间戳
Unix 时间戳(Unix Timestamp / Epoch Time)是从 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数——把任意时间戳粘贴到在线 timestamp converter 即可瞬间看到对应日期。它是一个整数,例如:
1700000000→ 2023-11-14 22:13:20 UTC1700000000000→ 同一时刻(但以毫秒为单位)
时间戳是编程中最常用的时间表示方式,因为它是时区无关的纯数字,便于存储、比较和计算;对于周期性定时任务而非一次性时间点,cron parser 是互补的工具。
为什么需要时间戳转换
- 调试 API:后端返回的时间戳需要转换为可读格式才能理解
- 日志分析:系统日志中的时间戳需要转换为本地时间
- 数据库查询:SQL 中的时间戳字段需要转换为日期
- 跨时区协作:时间戳是统一的时间基准,避免时区混淆
如何使用在线时间戳转换器
使用 ToolVault 工具匣 的 时间戳转换器:
- 时间戳 → 日期:粘贴时间戳数字,工具自动识别秒/毫秒/微秒
- 日期 → 时间戳:选择或输入日期时间,一键生成时间戳
- 自动识别:粘贴任意时间戳,工具自动判断单位(s/ms/μs)
时间戳单位详解
| 单位 | 位数 | 示例 | 常见场景 |
|---|---|---|---|
| 秒(s) | 10位 | 1700000000 | Unix/Linux, SQL, Redis |
| 毫秒(ms) | 13位 | 1700000000000 | JavaScript, Java, Go |
| 微秒(μs) | 16位 | 1700000000000000 | MySQL, 高精度计时 |
自动识别技巧
看时间戳的位数可以快速判断单位,也可以直接用 timestamp converter 自动识别:
- 10 位数字 → 秒(如
1700000000) - 13 位数字 → 毫秒(如
1700000000000) - 16 位数字 → 微秒(如
1700000000000000)
编程语言中的时间戳
JavaScript / TypeScript
// 当前时间戳(毫秒)
const ms = Date.now(); // 1700000000000
// 当前时间戳(秒)
const s = Math.floor(Date.now() / 1000); // 1700000000
// 毫秒 → Date 对象
const date = new Date(1700000000000);
// Date → 毫秒
const timestamp = date.getTime();
Python
import time
from datetime import datetime
# 当前时间戳(秒)
timestamp = int(time.time())
# 时间戳 → datetime
dt = datetime.fromtimestamp(1700000000)
# datetime → 时间戳
timestamp = int(dt.timestamp())
Go
import "time"
// 当前时间戳(秒)
timestamp := time.Now().Unix()
// 时间戳 → Time
t := time.Unix(1700000000, 0)
常见时间戳陷阱
毫秒 vs 秒混淆
最常见的错误。JavaScript 的 Date.now() 返回毫秒,而 Unix 标准是秒。如果把毫秒当秒传给 new Date(),会得到一个遥远未来的日期。
时区问题
时间戳本身是 UTC 的,但 new Date().toLocaleString() 会使用本地时区。在跨时区协作时,始终以 UTC 为基准。
2038 年问题
32 位有符号整数的最大值为 2147483647,对应 2038 年 1 月 19 日。届时 32 位 Unix 时间戳将溢出。现代系统已迁移到 64 位时间戳,但嵌入式系统和旧数据库仍需注意。
纳秒与雪花 ID
19 位时间戳(如 1700000000000000000)通常是纳秒级,MySQL TIMESTAMP(6) 或某些日志系统会用到。也有系统把 19 位当雪花 ID(时间戳 + 机器位 + 序列)——前者是时间,后者是分布式 ID,解码方式完全不同。遇到 19 位数字时先看量级:1e18 左右是纳秒时间,远大于此(如 1e18 * 10)才是雪花 ID。
实现注记 / Implementer's note
时间戳工具内部做单位启发式判断:按位数粗分(10 位秒 / 13 位毫秒 / 16 位微秒 / 19 位纳秒),再按量级二次校验(例如 19 位值若除以 1e9 后落在合理日期范围内,则判为纳秒)。双向转换都显示 UTC 与本地时区两列,避免「差 8 小时」的时区混淆。
FAQ
时间戳是时区无关的吗?
是的。Unix 时间戳是 UTC 时间的秒数,不涉及时区。同一时间戳在任何时区都表示同一时刻。只有在转换为可读日期时才需要考虑时区。
JavaScript 的 Date.now() 返回什么单位?
毫秒(ms)。这是新手最常犯的错误——将 13 位毫秒时间戳当作 10 位秒级时间戳使用。
如何获取当前时间戳?
在浏览器控制台输入 Date.now()(毫秒)或 Math.floor(Date.now()/1000)(秒)。也可以使用 ToolVault 工具匣 的在线工具一键获取。
这篇实战笔记来自 ToolVault 工具匣。更多开发者工具请访问 首页。
补充注记
实现时间戳工具时我们坚持同时显示 UTC 与本地时区两列——因为「差 8 小时」的排错需要并排对照而不是单侧输出。Date 构造器对 ISO 与斜杠日期的不同解析(文中已述)也是我们在浏览器实测后写进工具注释的真实结论。
相关工具
相关文章
Markdown 转 Word 交付指南:样式映射与行内降级
把 Markdown 草稿变成可交付的 .docx:pandoc 命令行与浏览器本地转换两条路线,标题/表格/代码块的 Word 原生样式映射对照,行内格式降级清单,以及「可编辑」为什么比「看起来像」更重要。
Word 转 Markdown 怎么转才干净:两条路线与格式保真对照
docx 转 Markdown 教程:pandoc 命令行与浏览器本地转换两条路线对比,标题/表格/图片/自动编号的保真行为,.doc 旧格式、图片体积、合并单元格等常见坑的解法。
中国车牌号规则与校验:普通牌、新能源与特殊格式全解
中国大陆车牌号编码规则详解:普通蓝牌、新能源 GA36D-2018、武警与使馆牌的结构、省份简称与发牌机关编码,附在线校验方法。