Pythonで日時を扱う¶
標準ライブラリ¶
UNIX時間(1970年1月1日を起点とする通算秒数)を扱うtimeモジュールと、タイムゾーン、ISO8601表現形式や日時の計算も扱うdatetimeモジュールがあります。
文字列から日時へ¶
- fromisoformat
- strptime
日時から文字列へ¶
- isoformat
- strftime
日時と日付・時刻の変換¶
時刻(time)から日時(datetime)へ¶
- combine
from datetime import date, datetime, time
today = date.today()
noon = time(12,0,0)
noon_today = datetime.combine(today, noon)
いろいろな変換¶
年間通算日¶
datetime から年間通算日への変換¶
import datetime
dt = datetime.datetime(2023, 3, 19, 4, 0, 0) # 2023-03-19T04:00:00Z
print(dt.strftime("%j"))
078
と表示されます。
date から年間通算日への変換¶
import datetime
day = datetime.date(2023, 3, 19) # 2023-03-19
print(day.strftime("%j"))
078
と表示されます。
年間通算日から datetime への変換¶
datetimeモジュールでは、ISO8601表現形式の年間通算日(ordinal date)形式 "YYYY-DDD" に対応していないので、書式を明示的に指定します。
import datetime
datetime.datetime.strptime('2023-078', "%Y-%j") # datetime(2023, 3, 19, 0, 0)
toordinalメソッドについて¶
datetimeおよびtimeクラスにはtoordinalメソッドが用意されていますが、これは西暦1年1月1日を起点とする通算日数を返すので、その年の年間通算日にはなりません。