使用时区在ISO 8601中写入numpy datetime64

时间:2016-02-11 19:43:30

标签: python datetime numpy timezone

将numpy datetime64对象作为ISO 8601字符串写入时,如何控制时区?具体来说,我希望时区为" + 0000",就像下面的输入一样。对于这个非常简单的例子,我只想让它打印回原始字符串。

import numpy
print(numpy.datetime64('2014-03-07T17:52:00.000+0000'))

对我来说,它会返回

2014-03-07T12:52:00.000-0500

我正在使用python 3.4,numpy 1.9.2和windows。

This问题类似,但前两个答案实际上没有回答问题,第三个答案是针对unix的。

2 个答案:

答案 0 :(得分:1)

s = '2014-03-07T17:52:00.000+0000'
print(numpy.datetime64(s).item().replace(tzinfo=pytz.UTC).isoformat('T'))

感谢ShadowRanger让我朝着正确的方向前进。 item从datetime64获取天真的datetime,然后用UTC替换时区,因为我知道在这种情况下它是什么,然后用'T'分隔符以ISO格式获取它。

答案 1 :(得分:0)

这应该有效:

import numpy, time, os

os.environ['TZ'] = 'GMT'
time.tzset()


print(numpy.datetime64('2014-03-07T17:52:00.000+0000'))

基于此stackoverflow答案:

https://stackoverflow.com/a/32764078/5915424