2016-02-11 29 views
0

將numpy datetime64對象寫入ISO 8601字符串時,如何控制時區?具體來說,我希望時區爲「+0000」,就像下面的輸入一樣。對於這個非常簡單的例子,我只是想讓它打印回原始字符串。在帶時區的ISO 8601中編寫numpy datetime64

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。

+0

可能的重複[如何強制python打印numpy datetime64與指定的時區?](http://stackoverflow.com/questions/25134639/how-to-force-python-print-numpy-datetime64-with-specified-時區) – ShadowRanger

+0

@ShadowRanger哪個答案實際上回答了這個問題? – user2133814

+0

接受的答案正確地指出'numpy'不支持任何明確的日期時間格式,最高的投票顯示瞭如何轉換爲Python'datetime'使您可以達到相同的效果。 – ShadowRanger

回答

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

感謝ShadowRanger你爲我在正確的方向前進。項目從datetime64得到天真的datetime,然後用UTC替換時區,因爲我知道在這種情況下它是什麼,然後用'T'分隔符以ISO格式獲取它。

0

這應該工作:基於這個計算器的答案

import numpy, time, os 

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


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

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

+0

該方法僅適用於unix,我正在使用windows。我還編輯了這個問題,以表明這一點。 – user2133814