Chrome / WebKit 转 Unix 时间戳转换器
把 Chrome / WebKit 转换为 Unix 时间。精确公式与大数支持。输出:秒、毫秒、ISO 8601 与可读格式。
自 1601-01-01 UTC 以来的微秒数
当前时间 — WebKit / Chrome 时间戳—
Unix 时间戳(秒)—
什么是 Chrome / WebKit 时间戳?
Chromium 和 WebKit 将许多时间存储为自 1601 年 1 月 1 日 UTC 以来的微秒数。你会在 History、Cookies 和 Login Data 这些 SQLite 数据库中遇到这些 17 位的值,这使该格式在浏览器取证和数据导出调试中很常见。
- 纪元:1601-01-01 00:00:00 UTC(与 Windows FILETIME 同一基准)
- 分辨率:微秒(每秒 1,000,000)
- 当前值是约 1.3 × 10^16 的 17 位数字
- 常见于:Chrome/Edge/Brave 的 History(visits.visit_time)、Cookies(creation_utc)、缓存条目
如何将 WebKit 时间戳转换为 Unix 时间
WebKit 时间戳是自 1601 年起的微秒。除以 1,000,000 得到自 1601 年起的秒,再减去到 Unix 纪元的 11,644,473,600 秒差。
- Unix seconds = WebKit / 1000000 − 11644473600
- Unix milliseconds = WebKit / 1000 − 11644473600000
- 示例:13344473600000000 → 1700000000 → 2023-11-14 22:13:20 UTC
- SQLite: datetime(visit_time/1000000 - 11644473600, "unixepoch")
边界情形
WebKit 时间戳为 0 表示 1601-01-01,通常代表空值或未设置值,而非真实访问。微秒精度超过 JavaScript 安全整数,因此本转换器用 BigInt 解析,并保留到毫秒的完整精度。
- 不要把自 1601 年起的微秒格式与普通 Unix 微秒混淆——它们相差 1601→1970 的偏移
- 所有 WebKit 时间都是 UTC;转换后再选择显示时区
- 某些 Chrome 字段(如 last_visit_time = 0)是表示「从不」的哨兵值
相关时间戳格式转换器
WebKit 时间戳在实践中出现的位置
取证和分析团队会在特定的 Chromium 工件中遇到这种格式:
- Chrome/Edge/Brave 的 History 数据库 — visits.visit_time、urls.last_visit_time
- Cookies 数据库 — creation_utc、expires_utc、last_access_utc
- Login Data SQLite — 已保存凭据上的 date_created
- Hindsight、ChromeHistoryView 和 DB Browser for SQLite 等工具期望自 1601 年起的微秒
- 缓存和本地存储常使用不同格式——在假定为此格式前请逐表核实
FAQ
- Chrome 的时间戳使用哪个纪元?
- Chromium/WebKit 时间戳计数自 1601 年 1 月 1 日 00:00:00 UTC 以来的微秒——与 Windows FILETIME 同一纪元,但单位是微秒而非 100 纳秒 tick。
- 如何转换 Chrome 历史记录时间戳?
- 把该值除以 1,000,000 再减去 11,644,473,600,得到以秒为单位的 Unix 时间戳,然后格式化为日期。
- 为什么 Chrome 时间戳是 17 位?
- 因为它计数自 1601 年起的微秒(百万分之一秒);累积 400 多年的微秒会产生一个 17 位的数字。