【Python】日付や時刻を比較する(大小・前後関係の判定)

Pythonの datetimedate オブジェクトは、数値と同じように 比較演算子(<, >, ==, != を使って、どちらが新しいか(未来か)、あるいは同じ日時かを判定できます。

基本ルールとして、「未来の日時」ほど大きく、「過去の日時」ほど小さい と評価されます。

目次

実装例:セール期間の判定

現在の日時を取得し、それが設定された「セール終了日時」を過ぎているかどうかを判定するプログラムを作成します。

ソースコード

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(...) で生成したオブジェクトはどちらもタイムゾーンなしになるため、そのまま比較可能です。)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次