在Python中将微秒时间戳转换为datetime

Jos*_*man 7 python datetime timestamp

我正在从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
Run Code Online (Sandbox Code Playgroud)

然而,这产生了错误的日期(约一年).我在这做错了什么?

Ped*_*ano 8

另一种选择,tzinfo从Python 3.2开始从标准库中获取(对于较旧的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'
Run Code Online (Sandbox Code Playgroud)

我假设与期望值的差异是时区偏移量.

更新:

正如@JFSebastian正确指出的那样,如果您使用隐式UTC 天真 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'
Run Code Online (Sandbox Code Playgroud)