Pythonの datetime や date オブジェクトは、数値と同じように 比較演算子(<, >, ==, !=) を使って、どちらが新しいか(未来か)、あるいは同じ日時かを判定できます。
基本ルールとして、「未来の日時」ほど大きく、「過去の日時」ほど小さい と評価されます。
目次
実装例:セール期間の判定
現在の日時を取得し、それが設定された「セール終了日時」を過ぎているかどうかを判定するプログラムを作成します。
ソースコード
from datetime import datetime
# 1. 比較対象の日時(セールの終了日時)を設定
# 2025年12月31日 23:59:59
sale_end_date = datetime(2025, 12, 31, 23, 59, 59)
# 2. 現在の日時を取得
current_date = datetime.now()
print(f"現在日時: {current_date}")
print(f"終了日時: {sale_end_date}")
print("-" * 30)
# 3. 日時の比較
# 未来(大きい) > 過去(小さい)
if current_date < sale_end_date:
# 現在 < 終了日 なので、まだ期間内
print("判定: セールは開催中です!")
elif current_date > sale_end_date:
# 現在 > 終了日 なので、期間を過ぎている
print("判定: 残念ながらセールは終了しました。")
else:
# 完全に一致する場合(稀ですが == で判定可能)
print("判定: まさに今、終了時刻です。")
実行結果
現在日時: 2025-12-19 20:30:15.123456
終了日時: 2025-12-31 23:59:59
------------------------------
判定: セールは開催中です!
(※実行結果は現在の日時によって変化します)
解説
比較演算子のイメージ
A < B: AはBより**前(過去)**であるA > B: AはBより**後(未来)**であるA == B: AとBは同時である
注意点:タイムゾーンの一致
比較する2つの datetime オブジェクトは、両方とも「タイムゾーンなし(Naive)」か、両方とも「タイムゾーンあり(Aware)」である必要があります。片方だけにタイムゾーン情報がある状態で比較すると、TypeError が発生します。 (通常、datetime.now() と datetime(...) で生成したオブジェクトはどちらもタイムゾーンなしになるため、そのまま比較可能です。)
