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

Python 在ISO 8601中使用时区写入numpy datetime64,python,datetime,numpy,timezone,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 问题类似,

将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

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

这应该可以:

import numpy, time, os

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


print(numpy.datetime64('2014-03-07T17:52:00.000+0000'))
基于此答案:


感谢暗影游侠让我走上了正确的方向。item从datetime64获取naive datetime,然后用UTC替换时区,因为我知道在这种情况下是这样的,然后用带“T”分隔符的ISO格式获取它。

该方法仅在unix上可用,我使用的是windows。我还编辑了这个问题以使大家知道。可能是@ShadowRanger的副本,哪个答案真正回答了这个问题?公认的答案正确地指出
numpy
不支持任何明确的日期时间格式,得票最高的显示了如何转换为Python
datetime
可以实现相同的效果。@ShadowRanger得票最高的答案以“2013-03-09 22:30:54”结尾,这不是那个问题或我的问题所要求的。如果这是不可能的,我想知道更多的细节,因为这看起来很奇怪。一旦你转换成Python原生datetime,你可以用它来格式化你喜欢的格式
numpy
似乎没有提供任何格式化操作符;Python类型只有一个
\uuuuu str\uuuuu
方法,并且它不接受参数,因此需要特殊的格式化函数(或者使用
\uuuuu format\uuuuu
定义格式迷你语言)。在内部,
datetime64
根本不存储时区;它读取它以转换为UTC,但在转换后丢弃它以最小化存储需求。
s = '2014-03-07T17:52:00.000+0000'
print(numpy.datetime64(s).item().replace(tzinfo=pytz.UTC).isoformat('T'))