【Python】NetCDFで日付の加算 timedelta

Python

こんにちは、しらすです。

先日NetCDFでtimeを扱うときに少し困ったのでメモします。

NetCDFのtimeの日時を算出する

NetCDFのtimeデータは、ある日時からの時間経過で規定されています。基準となる日にちに対して、時間経過分を加算することで日時を算出可能です。

timedeltaという関数を用いて算出可能ですので以下に使い方を記載します。

timedeltaで日時を算出する

import datetime

d = datetime.datetime(1800, 1, 1, 0, 0, 0) #initial date

by_day  = d + datetime.timedelta(days=30)               #30days shift
by_hour = d + datetime.timedelta(hours=612)             #25days + 12hours shift
by_day_hour = d + datetime.timedelta(days=20,hours=132) #25days + 12hours shift

print("by day       = ", by_day)
print("by_hour      = ", by_hour)
print("by_day_hour  = ", by_day_hour)

timedeltaはdaysやhoursで指定した分だけ基準となる日時からシフト可能です。NetCDFのデータの場合はhoursを使う場合が多いようです。

算出した結果

おまけ NetCDFのtimeの基準日時と値の単位の調べ方

作り手によって基準日時が変わるようなので、調べ方を記載しておきます。以下の関数を実行して確認しましょう。

# netCDFファイルの読み込み
nc = netCDF4.Dataset('rhum.1979.nc', 'r')

key  = nc.variables.keys()  #keyの名前を確認(timeという名前じゃない場合があるため)
spec = nc['time']           #timeの詳細を確認

コメント