将Chrome历史记录时间戳转换为可读格式

9 投票
2 回答
8221 浏览
提问于 2025-04-15 18:51

我最开始发这个问题是想用Python找到一个解决办法,得到了不错的帮助,但还是没能找到解决方案。我有一个脚本在OS X 10.5的客户端上运行,用来记录互联网浏览历史(这是我在美国公立学校做系统管理员时需要做的事情)。Firefox 3.x会把历史记录存储在一个sqlite数据库里,我已经搞明白怎么用python和sqlite3把这些信息提取出来了。Firefox 3.x使用的是常规的Unix时间戳来标记访问时间,这个转换起来不难……Chrome也把浏览历史存储在sqlite数据库里,但它的时间戳格式是从1601年1月开始的微秒数。我想用Python来解决这个问题,但据我所知,sqlite3模块不支持这种UTC格式。有没有其他工具可以把Chrome的时间戳转换成普通人能看懂的格式呢?

2 个回答

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 ..
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

撰写回答