将微秒时间戳转换为Python中的datetime [英] Convert microsecond timestamp to datetime in Python

查看:1027
本文介绍了将微秒时间戳转换为Python中的datetime的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从Chrome浏览器提取cookie过期日期。从外观上看,Chrome正在将Cookie到期时间戳记以1601-01-01 00:00:00 UTC作为纪元。我当前的实现如下:

  stamp = int(result [3])
date = datetime.datetime。 fromtimestamp(stamp / 10000000.0)
打印date.year

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

解决方案

另一个选项(也假设 pytz ,所以你有一个 tzinfo 实现):

 >>> import pytz 
>>>>从datetime import datetime,timedelta
>>> epoch = datetime(1601,1,1,tzinfo = pytz.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'





更新:



正如@JFSebastian正确指出的,如果您只使用隐含的UTC天真 datetime 对象,则使用 pytz 是多余的,上述可以简化为:

 >>>从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'


I'm pulling a cookie expiration date from Google Chrome. From what it looks like, Chrome is storing cookie expirations with a timestamp that uses 1601-01-01 00:00:00 UTC as the epoch. My current implementation is as follows:

stamp = int(result[3])
date = datetime.datetime.fromtimestamp(stamp / 10000000.0)
print date.year

However, this is producing the wrong date (off by about a year). What am I doing wrong here?

解决方案

Another option (also assuming pytz is installed so you have a tzinfo implementation):

>>> import pytz
>>> from datetime import datetime, timedelta
>>> epoch = datetime(1601, 1, 1, tzinfo=pytz.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'

I assume that the difference to your expected value is the timezones offset.

Update:

As @J.F.Sebastian correctly points out, if you are using only implicit UTC naive datetime objects, using pytz is redundant and the above can be simplified to:

>>> 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中的datetime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆