Python の日付 - datetime
Python では基本のデータ型に日付型が含まれていません。
日付を扱いたい時には datetime モジュールをインポートして使います。
ここでは Python の日付、datetime モジュールの基本的な使い方についてご説明します。
Python で日付をフォーマットされた文字列に変換する方法はこちらでご確認ください。 Python で日付をフォーマットされた文字列に変換する
Python で日時を取得する
Python で現在の日時を取得するには datetime モジュールの datetime クラスを使います。
now() や today() メソッドで現在のローカルの日時を取得することができます。
二つの違いは、now() のほうは引数にタイムゾーンを渡すことができますが、引数を渡さなければどちらも同じで、ローカルの日時を返します。
utcnow() メソッドを使うと、現在の UTC の日時を取得することができます。
import datetime
print(datetime.datetime.now())
print(datetime.datetime.today())
print(datetime.datetime.utcnow())
実行結果は次のようになります。ロサンゼルスに住んでいるので、ローカル時間は太平洋夏時間 (Pacific Daylight Time)で、utc のほうは + 7 時間されています。
2020-06-20 21:44:01.628979
2020-06-20 21:44:01.629073
2020-06-21 04:44:01.629083
Python で日付のみを取得する
Pyton で日付だけを取得するには datetime モジュールの date クラスの today() メソッドで取得できます。
import datetime
print(datetime.date.today())
実行結果は次のようになります。
2020-06-20
datetime クラスの date() メソッドを使っても日付のみを取得できます。
import datetime
print(datetime.datetime.now().date())
実行結果は先ほどと同じです。
2020-06-20
Python で日付を生成する
Python で日付を生成するには、date や datetime クラスのコンストラクタを使います。
コンストラクタで引数を、それぞれ次のように指定します。
date(year, month, day)
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
datetime() のコンストラクタの year、month、day 以外は省略可能です。
import datetime
print(datetime.date(2025, 9, 15))
print(datetime.datetime(2025, 9, 15, 14, 35, 22))
実行結果は次のようになります。
2025-09-15
2025-09-15 14:35:22
Python で日付を計算する
Python で日付を計算したい時、例えば二つの日付を引き算をして、その差分の日数を取得したい時は、次のように取得可能です。
import datetime
date1 = datetime.date(2020, 1, 1)
date2 = datetime.date(2020, 9, 30)
diff = date2 - date1
print(diff.days)
実行結果は次のようになります。
273
また、date や datetime オブジェクトに何日か足したり引いたりしたいような時は timedelta() が使えます。
例えば、現在の日付の 5 日前、5 日後の日付は次のように取得できます。
import datetime
d = datetime.date.today()
print(d)
print(d + datetime.timedelta(days=-5))
print(d + datetime.timedelta(days=5))
実行結果は次の通りです。
2020-06-20
2020-06-15
2020-06-25
Python で日付を比較する
Python で二つの日付を比較するには == != < <= > >= などの比較演算子が使えます。
import datetime
date1 = datetime.date(2020, 9, 1)
date2 = datetime.date(2020, 9, 2)
print(date1 == date2)
print(date1 != date2)
print(date1 > date2)
print(date1 <= date2)
実行結果は次のようになります。
False
True
False
True
Python で datetime の日付部分のみ比較する
Python で datetime の日付部分のみ比較したい時に、そのまま比較演算子を使うと時間まで考慮されてしまい、期待した結果にならないことがあります。
日付部分のみを比較したい時は、datetime クラスの date() メソッドを使って、日付の部分のみを取得して比較します。
import datetime
date1 = datetime.datetime(2020, 9, 1, 11, 12, 33)
date2 = datetime.datetime(2020, 9, 1, 23, 2, 12)
print(date1)
print(date2)
print(date1 == date2)
print(date1.date() == date2.date())
実行結果は次のようになります。date() メソッドで date を取得して比較すると、日付部分のみが比較できていますね。
2020-09-01 11:12:33
2020-09-01 23:02:12
False
True
以上、Python の日付、datetime モジュールの基本的な使い方についてご説明しました。