趣味で計算流砂水理

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

備忘録:np.datetime64のタイムゾーンの変更:UTCからJST

スポンサーリンク

pythonのdatetimeオブジェクトには、aware:タイムゾーンあり、native:タイムゾーンなしの概念があります。

参考サイト:datetime の UTC / JSTの変換についてまとめ | Python Snippets

一方、np.datetime64にはタイムゾーンがありません。

np.datetime64のタイムゾーンを変更する場合は型を変更する必要があります。

np.datetime64をdatetime.datetimeに変更するには、下サイトのとおり結構手間がかかります。

参考サイト:numpy.datetime64をPythonのdatetime.datetime型にキャストする - Qiita

pandasを使うと比較的簡単にできるので、その方法を記載しておきます。

参考サイト:pandasの時系列データのタイムゾーンを処理(tz_convert, tz_localize) | note.nkmk.me

サンプルデータ

time
#array(['2019-10-11T00:00:00.000000000', '2019-10-11T00:30:00.000000000',
#       '2019-10-11T01:00:00.000000000', '2019-10-11T01:30:00.000000000',
#       '2019-10-11T02:00:00.000000000', '2019-10-11T02:30:00.000000000',
#       '2019-10-11T03:00:00.000000000', '2019-10-11T03:30:00.000000000',
#       '2019-10-11T04:00:00.000000000', '2019-10-11T04:30:00.000000000',
#       '2019-10-11T05:00:00.000000000', '2019-10-11T05:30:00.000000000',
#       '2019-10-11T06:00:00.000000000', '2019-10-11T06:30:00.000000000'],
#      dtype='datetime64[ns]')

UTCからJSTに変更

import pandas as pd

s = pd.Series(time)
s = s.dt.tz_localize('UTC') 
s = s.dt.tz_convert('Asia/Tokyo')
s = s.dt.tz_localize(None)
s.values
#array(['2019-10-11T09:00:00.000000000', '2019-10-11T09:30:00.000000000',
#       '2019-10-11T10:00:00.000000000', '2019-10-11T10:30:00.000000000',
#       '2019-10-11T11:00:00.000000000', '2019-10-11T11:30:00.000000000',
#       '2019-10-11T12:00:00.000000000', '2019-10-11T12:30:00.000000000',
#       '2019-10-11T13:00:00.000000000', '2019-10-11T13:30:00.000000000',
#       '2019-10-11T14:00:00.000000000', '2019-10-11T14:30:00.000000000',
#       '2019-10-11T15:00:00.000000000', '2019-10-11T15:30:00.000000000',
#       '2019-10-11T16:00:00.000000000', '2019-10-11T16:30:00.000000000' ],
#      dtype='datetime64[ns]')