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("お誕生日おめでとうございます!")
このように、日付を入力して自分で比較することで、プログラムの楽しさを体験できます。
まとめ
Pythonで日付比較を行う基本と実践ポイント
本記事では、Pythonで日付を比較する方法について、datetimeモジュールの基本から応用までを段階的に解説しました。
日付処理は業務システムやWebアプリケーション、データ分析など幅広い分野で必要となる重要なスキルです。
特に「現在日時との比較」「過去か未来かの判定」「日数差の計算」などは実務でも頻繁に使われるため、しっかり理解しておくことが大切です。
まず、Pythonで日付を扱う際にはdatetimeモジュールをインポートする必要があります。
これにより、現在日時の取得や任意の日付生成が可能になります。
そして、生成したdatetimeオブジェクト同士は、そのまま比較演算子(<、>、==)を使って直感的に比較できます。
このシンプルさがPythonの大きな魅力の一つです。
また、日付を文字列として扱うケースも多く、その場合はstrptimeを使ってdatetime型に変換する必要があります。
文字列のまま比較してしまうと意図しない結果になるため、この変換処理は非常に重要なポイントです。
初心者がつまずきやすい部分でもあるため、実装時には常に意識しておきましょう。
日付比較を使った実用的な処理
日付比較は単なる大小判定だけでなく、条件分岐と組み合わせることで実用的なロジックを構築できます。 例えば「締切日を過ぎているか」「イベントまであと何日か」「誕生日が過去か未来か」といった判定処理は、 Webサービスや業務システムにおいて非常に頻繁に利用されます。
さらに、datetime同士の差を計算することで、timedelta型として日数差を取得できます。
これにより「残り日数」「経過日数」などの計算が簡単に実現できます。
ユーザーにとってわかりやすい表示や通知機能の実装にもつながる重要な技術です。
サンプルプログラムで復習しよう
ここまでの内容を踏まえて、日付比較の基本をまとめたサンプルプログラムを紹介します。 現在日時と指定日を比較し、さらに日数差も表示する実践的なコードです。
from datetime import datetime
# 今日の日付を取得
today = datetime.today()
# 比較対象の日付
target_date = datetime(2025, 12, 25)
# 比較処理
if today < target_date:
print("指定日は未来の日付です")
elif today > target_date:
print("指定日は過去の日付です")
else:
print("今日は指定日と同じ日です")
# 日数差の計算
diff = target_date - today
print("あと", diff.days, "日です")
このように、日付比較と差分計算を組み合わせることで、より実用的なプログラムを作ることができます。 シンプルなコードですが、応用すれば予約システムやスケジュール管理などにも活用できます。
初心者が意識すべき重要ポイント
- 日付は必ず
datetime型で扱うこと - 文字列は
strptimeで変換すること - 比較演算子で直感的に大小比較できることを理解すること
- 差分は
timedeltaで取得できることを覚えること - 日付と時間を分けたい場合は
date()を使うこと
これらのポイントを押さえておけば、日付処理で困ることはほとんどなくなります。 特に実務では日付処理の正確性が求められるため、基礎をしっかり理解しておくことが重要です。
生徒
「Pythonで日付を比較する方法って、思っていたよりシンプルでしたね。比較演算子がそのまま使えるのが驚きでした。」
先生
「そうですね。Pythonは直感的に書けるのが特徴です。特にdatetimeは実務でもよく使うので、しっかり慣れておきましょう。」
生徒
「文字列の日付をそのまま比較してはいけない、というのも重要なポイントですね。」
先生
「その通りです。strptimeでdatetime型に変換するのを忘れないようにしてください。ここでミスする人は多いですよ。」
生徒
「あと、日付の差を計算できるのも便利ですね。イベントまでの日数とかすぐ出せそうです。」
先生
「はい、timedeltaを使えば簡単に計算できます。実際の開発では通知機能や期限管理などに活用されます。」
生徒
「今日学んだ内容を応用すれば、スケジュール管理アプリも作れそうですね!」
先生
「良い視点ですね。基本をしっかり理解すれば、応用はいくらでも広がります。ぜひ実際にコードを書いて試してみてください。」