Pythonで日付を比較する方法を解説!初心者でもわかるdatetimeの使い方
生徒
「Pythonで日付を比べることってできるんですか?例えば、今日とある日付を比べて、過去か未来かを知りたいんですが……」
先生
「もちろんできますよ。Pythonにはdatetime(デイトタイム)という便利な機能が用意されていて、それを使えば簡単に日付の比較ができるんです。」
生徒
「難しそうですが、初心者でも使えますか?」
先生
「はい、大丈夫ですよ。これから順を追って説明していきますね!」
1. Pythonで日付を扱うには?datetimeモジュールを使おう
Python(パイソン)で日付を扱いたいときは、まずdatetimeというモジュールを使います。「モジュール」とは、便利な機能が詰まったツール箱のようなものです。使うには、最初に次のように書きます。
from datetime import datetime
この1行で、日付や時間を自由に使える準備が整います。
2. 今日の日付を取得してみよう
Pythonで「今日の日付」を取得したいときは、次のように書きます。
today = datetime.today()
print(today)
実行すると、下のように現在の日付と時間が表示されます。
2025-09-03 14:25:32.456789
このように、datetime型(でいとたいむがた)という特別な形式で、日付と時刻が一緒になって表示されます。
3. 日付同士を比較してみよう
Pythonでは、datetime型同士なら「<」「>」「==」などの比較演算子(ひかくえんざんし)で、日付の早い・遅いを比べることができます。
from datetime import datetime
today = datetime.today()
target = datetime(2025, 12, 25)
if today < target:
print("今日はまだクリスマスより前です。")
else:
print("クリスマスはもう過ぎました。")
このように、日付を比べて「どちらが早いか・遅いか・同じか」を判断できます。
4. 日付の比較結果を利用して条件分岐
比較した結果を使って、処理を分けることもできます。これを「条件分岐(じょうけんぶんき)」と言います。たとえば、誕生日をチェックするプログラムならこんな感じです。
from datetime import datetime
birthday = datetime(2023, 5, 1)
today = datetime.today()
if today > birthday:
print("その日は過去の日付です。")
elif today < birthday:
print("その日は未来の日付です。")
else:
print("今日はその日です!")
このように、日付を使ったロジックを自由に作ることができるのがPythonの便利なところです。
5. 日付の文字列("2025-01-01")を比較するには?
ときどき「日付を文字列(もじれつ)」で持っていることがあります。たとえば「2025-01-01」というテキストです。このままでは比較できないので、datetime型に変換(へんかん)してから比較しましょう。
from datetime import datetime
date_str = "2025-01-01"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
today = datetime.today()
if today < date_obj:
print("未来の日付です。")
strptimeというメソッドで、文字列をdatetime型に変換しています。
6. 日付の差を計算して、何日違うかを知る
比較するだけでなく、2つの日付の差(さ)を計算することもできます。たとえば、あと何日でイベントがあるかを知りたいときに便利です。
from datetime import datetime
today = datetime.today()
event_day = datetime(2025, 12, 31)
diff = event_day - today
print(diff.days, "日後にイベントがあります。")
このように、datetime同士を引き算すると、timedelta(たいむでるた)という型になり、その中のdaysを使うと「何日違うか」がわかります。
7. よくあるエラーと注意ポイント
初心者の方がつまずきやすいポイントも紹介しておきます。
- 文字列のまま比較しないこと! → 「2025-01-01」などは
datetime型に変換してから比較しましょう。 - 日付と時間の違いに注意! →
datetime型は「日付と時間のセット」です。日付だけ使いたい場合は、date()メソッドで切り出すと良いです。
today = datetime.today().date()
timezoneの設定も必要です。日本で使う分には気にしなくてOKです。8. 練習問題:あなたの誕生日は未来?過去?
最後に、練習としてあなたの誕生日が未来か過去かを判断するプログラムを書いてみましょう。
from datetime import datetime
birth_str = input("あなたの誕生日を yyyy-mm-dd 形式で入力してください:")
birth_date = datetime.strptime(birth_str, "%Y-%m-%d")
today = datetime.today()
if birth_date > today:
print("その日は未来ですね!")
elif birth_date < today:
print("その日は過去ですね!")
else:
print("お誕生日おめでとうございます!")
このように、日付を入力して自分で比較することで、プログラムの楽しさを体験できます。