datetimeモジュール
Pythonで日付と時間を操作する場合に使います。
日付関連
1 2 3 4 5 6 7 8 |
from datetime import date t = date.today() print(t) # 2023-06-17 print(t.year) # 2023 print(t.month) # 06 print(t.day) # 17 print(t.weekday()) # 5:曜日が帰る。 |
date()は日付を扱うためのモジュールになります。
日付を指定して作る。
1 2 |
t2 = date(2023,5,12) print(t2) # 2023-05-12 |
時間関連
1 2 3 4 5 6 7 |
from datetime import time t = time(12,15,30,0) print(t) # 12:15:30 print(t.hour) # 12 print(t.minute) # 15 print(t.second) # 30 print(t.microsecond) # 0 |
日時をどちらも扱う
1 2 3 4 5 6 7 |
from datetime import datetime print(datetime.now()) # 2023-06-17 16:00:30.484809 n = datetime.now() print(n.year) print(n.hour) t = datetime(2023,6,18,12,30,15,4) print(t) # 2023-06-18 12:30:15.000004 |
datetimeモジュールはdateモジュールもtimeモジュールもどちらのメソッドも使うことが可能です。
フォーマット
1 |
now.strftime('%Y%m%d_%H%M%S') # 20230629_220507 |
%Y | 西暦4桁 |
%y | 西暦2桁 |
%m | 月 |
%d | 日 |
%H | 時間 |
%M | 分 |
%S | 秒 |
日数を計算
1 2 3 4 |
d1 = datetime(2023,6,18) d2 = datetime(1987,6,18) result = d1 - d2 print(result.days) # 13149 |
datetimeオブジェクトに日数を指定してあげて引き算すれば求めることができます。この差分は「timedeltaオブジェクト」と呼びます。
日数を進める
1 2 3 |
from datetime import datetime,timedelta d = datetime(2023,6,18) print(d + timedelta(days=10)) # 2023-06-28 00:00:00 |
timedeltaオブジェクトをそのまま足してあげれば足した日付を取得できます。
タイムゾーンについて
datetimeオブジェクトを使った場合は今使っているPCのタイムゾーンがそのまま反映されて取得されます。(日本のタイムゾーンに指定しているPCであれば日本の日時が取得できます。)
ただ、サーバーで動かしたいと考えている場合はサーバーが日本ではない場合もあるのでどのタイムゾーンの日時を取得するか明示的に指定してあげる必要がでてきます。
1 2 3 4 |
from datetime import datetime,timedelta,timezone JST = timezone(timedelta(hours=+9)) t = datetime(2023,6,18,12,tzinfo=JST) print(t) # 2023-06-18 12:00:00+09:00 |
祝日かの判定
日付が祝日かどうかの判定はjpholidayというライブラリを使います。Python標準ではないのでpipインストールしてあげる必要があります。
ただ、祝日は年によって変化するものなのでこのライブラリを使う場合は必ず最新化してから使うようにしましょう。
この記事へのコメントはありません。