python - 如何将微秒时间戳转换为日期时间?

标签 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

但是,这产生了错误的日期(相差大约一年)。我在这里做错了什么?

最佳答案

另一种选择,自 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/

相关文章:

visual-studio-2010 - Visual Studio 2010 中的 SQLite DateTime <无法读取数据>

php - 将 DateTime 从 mySql 更改为 php 中的时间戳

mysql - MySQL中如何按时间戳差异排序?

python - flask -wtf : Using a kwarg to set the initial value for a field

python - python 网络应用程序的某些部分是否安全而其他部分不安全?

python - 验证使用 ElementTree 解析的 XML,可能吗?

DB2 Timestamp选择语句

python - 原始错误是 : DLL load failed while importing _multiarray_umath

php - 使用 DateTime/DateTimeZone 在 PHP 中调整时区

python - 为什么 django.utils.timezone.make_aware 和 pytz.localize 在处理 DST 时返回不同的结果?