将Chrome浏览历史记录的日期/时间戳转换为可读格式

9

我最初发布这个问题是为了寻找使用Python的答案,得到了一些好的帮助,但仍然没有找到解决方案。我有一个在OS X 10.5客户端机器上运行的脚本,用于捕获互联网浏览历史记录(作为美国公立学校系统管理职责的一部分)。Firefox 3.x将历史记录存储在sqlite db中,我已经找出如何使用python / sqlite3获取该信息。 Firefox 3.x使用传统的unix时间戳标记访问,这并不难转换... Chrome也将浏览器历史记录存储在sqlite db中,但其时间戳格式为自1601年1月以来的微秒数。 我想使用Python找出解决方法,但据我所知,sqlite3模块不支持该UTC格式。是否有其他工具可以将Chrome时间戳转换为人类可读格式?


非常有帮助。你是怎么发现 Google Chrome 时间戳是自 1601 年 1 月以来的微秒数的呢? - Richard Neish
3
Chrome SQLite格式,包括1601年1月,在https://groups.google.com/forum/#!topic/chromium-extensions/c4lnssuNAFI中进行了讨论。 - Juuso Ohtonen
2个回答

9

使用datetime模块。例如,如果问题中的微秒数为10 ** 16:

>>> datetime.datetime(1601, 1, 1) + datetime.timedelta(microseconds=1e16)
datetime.datetime(1917, 11, 21, 17, 46, 40)
>>> _.isoformat()
'1917-11-21T17:46:40'

这告诉你是1917年11月21日下午6点前一刻。当然,由于strftime方法的存在,您可以以任何方式格式化datetime对象。如果您还需要应用时区(而不仅仅是UTC),请查看第三方模块pytz


0

Bash

  $ date -ud @$[13315808702856828/10**6-11644473600] +"%F %T %Z"
    2022-12-18 03:45:02 UTC
  $ printf '%(%FT %T %z)T\n' $[13315808702856828/10**6-11644473600]
    2022-12-17 T19:45:02 -0800 

Perl

$ echo ".. 13315808702856828 .." |\
    perl -MPOSIX -pe 's!\b(1\d{16})\b!strftime(q/%F/,gmtime($1/1e6-11644473600))!e'
.. 2022-12-17 ..

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接