WebKit/Chrome Time

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 位的数字。