13

指定したタイムゾーンでnumpyのdatetime64オブジェクトを見たいです。

>>> import numpy as np
>>> np.datetime64('2013-03-10T01:30:54')
numpy.datetime64('2013-03-10T01:30:54+0400')
>>> np.datetime64('2013-03-10T01:30:54+0300')
numpy.datetime64('2013-03-10T02:30:54+0400')

別の timezone を指定しても、Python は常に UTC+0400 (私のローカル タイムゾーン) で datetime オブジェクトを出力します>>> np.datetime64('2013-03-10T01:30:54+0300')。UTC + 0000タイムゾーンでpython印刷を強制する方法はありますか?

numpy 1.8.1 を使用しています。

4

3 に答える 3

7

numpy documentationで数回言及されています:

datetime オブジェクトは、ある瞬間を表します。

...

日時は常に POSIX 時間に基づいて保存されます ...

そのため、内部的に datetime64 は単一の整数を追跡しています。これは、UNIX エポック (1970 年 1 月 1 日) 以降の値として時刻を表します (閏年はカウントされません)。

したがって、タイム ゾーンは保持されません。タイム ゾーン オフセットを渡すと、それが適用されて正しい UTC 時刻が決定されます。渡さない場合は、ローカル マシンのタイム ゾーンが使用されます。入力に関係なく、出力ではローカル マシンのタイム ゾーンを使用して、UTC 時刻をオフセット付きのローカル時刻に投影します。

于 2014-08-06T14:44:41.057 に答える
6

UTC + 0000タイムゾーンでpython印刷を強制する方法はありますか?

例のデータの UTC で時間を表す単純なオブジェクト.item()を返すことを呼び出すことができます。datetime

>>> import numpy
>>> numpy.__version__
'1.8.1'
>>> dt = numpy.datetime64('2013-03-10T01:30:54+0300')
>>> dt
numpy.datetime64('2013-03-10T02:30:54+0400')
>>> dt.item()
datetime.datetime(2013, 3, 9, 22, 30, 54)
>>> print(dt.item())
2013-03-09 22:30:54
于 2014-08-31T14:38:46.883 に答える
3

datetime64オブジェクトを印刷する前に、いつでもタイムゾーンを設定できます。

>>> import os, time, numpy
>>> os.environ['TZ'] = 'GMT'
>>> time.tzset()

>>> numpy.datetime64(0, 's')
numpy.datetime64('1970-01-01T00:00:00+0000')
于 2015-09-24T14:32:17.327 に答える