由于我无法控制的原因,我使用的是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
部分?
答案 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