Python2 datetime - 使用偏移将纪元时间转换为UTC时间戳

时间:2017-04-17 22:13:33

标签: python datetime python-2.x utc

由于我无法控制的原因,我使用的是Python 2,因此无法升级到Python 3(它更好地支持时区)。

我有一个像1492464960.53这样的纪元时间,我希望将其转换为像2017-04-17T21:36:00.530000+00:00这样的时间戳。

我尝试使用以下代码,但这不会给出我需要的时间戳的+00:00部分。

import datetime
created=1492464960.53
time_str = datetime.datetime.utcfromtimestamp(created).isoformat()
print(time_str)
>> 2017-04-17T21:36:00.530000

如何添加+00:00部分?

2 个答案:

答案 0 :(得分:1)

试过这个,它对我有用。

首先解释为什么原始解决方案不起作用,根据我的理解,isoformat()不适用于上述纪元值的原因是因为此方法要求对象返回具有'utcoffset'属性的内容,但是当我使用此属性测试时,float / epoch值返回'None'。 如果我们不打算转换浮点数,那么isoformat方法可能会很好地工作。

无论如何,在解决方案上:

from datetime import datetime, tzinfo
import pytz
created = 1492464960.53
dt = datetime.utcfromtimestamp(created)

##print results for above 'dt' variable

2017-04-17 21:36:00.530000

dt = dt.replace(tzinfo=pytz.utc)

##print results for above 'dt' variable

2017-04-17 21:36:00.530000+00:00

dt.isoformat()

##print results for above 'dt' variable

'2017-04-17T21:36:00.530000+00:00'

答案 1 :(得分:0)

抱歉,不确定你对安装pytz的意思是什么,我只是点了安装的pytz,然后在我的本地机器上的python shell中添加了import语句。

不确定这是最好的解决方案,但它似乎有效,所以我可以提供替代方案:

decryptedText

应该打印

'2017-04-17T14:36:00.530000'

created = 1492464960.53
dt = dt.utcnow().fromtimestamp(created, dt.tzname()).isoformat()

应该打印

2017-04-17T21:36:00.530000 + 00:00