我正在从 Google Chrome 中提取 cookie 过期日期。从外观上看,Chrome 存储的 cookie 过期时间带有使用 1601-01-01 00:00:00 UTC 作为纪元的时间戳。我目前的实现如下:
stamp = int(result[3])
date = datetime.datetime.fromtimestamp(stamp / 10000000.0)
print date.year
但是,这产生了错误的日期(相差大约一年)。我在这里做错了什么?
最佳答案
另一种选择,自 Python 3.2 起从标准库中获取 tzinfo
(对于较旧的 Python 版本,您可以从 pytz
获取):
>>> import pytz
>>> from datetime import datetime, timedelta, timezone
>>> epoch = datetime(1601, 1, 1, tzinfo=timezone.utc)
>>> cookie_microseconds_since_epoch = 13022344559000000
>>> cookie_datetime = epoch + timedelta(microseconds=cookie_microseconds_since_epoch)
>>> str(cookie_datetime)
'2013-08-29 13:55:59+00:00'
我假设与您的预期值的差异是时区偏移量。
更新:
正如@J.F.Sebastian 正确指出的那样,如果您使用隐式 UTC naive datetime
对象,tzinfo
是多余的,上面的内容可以是简化为:
>>> from datetime import datetime, timedelta
>>> epoch = datetime(1601, 1, 1)
>>> cookie_microseconds_since_epoch = 13022344559000000
>>> cookie_datetime = epoch + timedelta(microseconds=cookie_microseconds_since_epoch)
>>> str(cookie_datetime)
'2013-08-30 13:55:59'
关于python - 如何将微秒时间戳转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589952/