将微秒时间戳转换为Python中的datetime [英] Convert microsecond timestamp to datetime in Python
问题描述
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屋!