Pythonのtimedeltaで日付の加算・減算をしよう!初心者でもわかる時間操作の基本
生徒
「Pythonで、今日から3日後の日付を計算したいんですが、どうすればいいですか?」
先生
「それはtimedeltaという道具を使えば簡単にできますよ。」
生徒
「タイムデルタ…?聞いたことがない言葉です。難しくないですか?」
先生
「安心してください。タイムデルタは日付の足し算や引き算をするための、やさしい道具です。今から丁寧に説明していきましょう。」
1. timedeltaとは?Pythonで日付を加算・減算する方法
Python(パイソン)で日付や時刻を操作する際、標準で用意されているのがdatetime(デイトタイム)モジュールです。その中でも、今回注目するtimedelta(タイムデルタ)は、「時間の長さ(期間)」を表現するための専用ツールです。
例えば、「現在の日付に3日プラスする」や「特定のイベントから2時間マイナスする」といった計算をしたい時に、数字をただ足すのではなく「時間の概念」として正しく計算してくれます。日付の計算は、月をまたいだり(31日の次は1日)、うるう年があったりと複雑ですが、timedeltaを使えばPythonがすべて自動で調整してくれます。
# 1. まずは道具(モジュール)を読み込みます
from datetime import datetime, timedelta
# 2. 今日の日付を取得します
today = datetime.now()
print("計算前の今日の日付:", today.strftime('%Y年%m月%d日'))
# 3. 「3日分」という時間の長さを作ります
three_days = timedelta(days=3)
# 4. 今日の日付に3日分を足してみます
future = today + three_days
print("3日後の日付:", future.strftime('%Y年%m月%d日'))
プログラミング未経験の方でも、「日付 + 期間 = 未来の日付」というシンプルな足し算として考えればOKです。このようにtimedeltaは、カレンダーの計算を楽にしてくれる「魔法の物差し」のような役割を果たします。
2. timedeltaの基本的な使い方
Pythonで「○日後」や「○日前」の日付を計算したいときに欠かせないのがtimedelta(タイムデルタ)です。これは、特定の「日付」ではなく、「10日間」や「5時間」といった「時間の長さ(期間)」を表すための道具だと考えると分かりやすくなります。
まずは、一番よく使う「今日から7日後の日付」を求める簡単なプログラムを見てみましょう。プログラミングが初めての方でも、以下のコードをコピーして実行するだけで結果を確認できます。
from datetime import datetime, timedelta
# 1. 今日の日付と時刻を取得する
today = datetime.today()
# 2. 「7日間」という期間(データ)を作る
seven_days = timedelta(days=7)
# 3. 今日の日付に7日間を足し合わせる
after_7_days = today + seven_days
print("今日の日付:", today.strftime('%Y年%m月%d日'))
print("7日後の日付:", after_7_days.strftime('%Y年%m月%d日'))
今日の日付: 2026-01-30
7日後の日付: 2026-02-06
解説とポイント:
- 直感的な計算:
today + timedelta(days=7)のように、算数の足し算と同じ感覚で日付を操作できるのがPythonの便利なところです。 - 引数の指定:
days=7の数字を30に変えれば1ヶ月後(30日後)になりますし、days=-7とマイナスにすれば「7日前」を計算することも可能です。 - 自動繰り上げ: 月をまたぐ計算(例:1月30日の2日後)も、Pythonがカレンダーに基づいて自動的に「2月1日」と計算してくれるので、複雑な条件分岐を書く必要はありません。
このように、timedeltaは「時間のパーツ」を作って、それを既存の日付にガッチャンコとくっつけるイメージで使ってみてください。
3. 日付の引き算(過去の日付を求める)
timedeltaは足し算だけでなく、引き算もできます。たとえば「今日から3日前」を求めたいときは、- timedelta(days=3)と書きます。
three_days_ago = today - timedelta(days=3)
print("3日前:", three_days_ago)
3日前: 2025-08-31 12:34:56.789012
このように、「過去の日付」も簡単に計算できます。
4. timedeltaで使える単位
timedeltaでは、日(days)だけでなく、時間(hours)や分(minutes)なども指定できます。以下のような単位が使えます:
days:日seconds:秒microseconds:マイクロ秒milliseconds:ミリ秒minutes:分hours:時間weeks:週
これらを自由に組み合わせることもできます。
5. 複数単位を同時に使ってみよう
たとえば、「3日と12時間と30分後」のように、複数の時間を組み合わせて加算することもできます。
delta = timedelta(days=3, hours=12, minutes=30)
future = today + delta
print("3日12時間30分後:", future)
3日12時間30分後: 2025-09-06 01:04:56.789012
このようにtimedeltaはとても柔軟です。
6. 2つの日付の差を求める
実はtimedeltaは、自分で作るだけでなく、日付同士を引き算することで自動的に作られます。これにより、「何日前なのか」「何日後なのか」などを簡単に知ることができます。
future_date = datetime(2025, 9, 10)
diff = future_date - today
print("差は:", diff)
print("日数だけ知りたいときは:", diff.days)
差は: 7 days, 0:00:00
日数だけ知りたいときは: 7
このように、2つの日付の間に何日あるかを簡単に計算できます。
7. パソコン初心者の方への補足:timedeltaとは何か?
timedelta(タイムデルタ)は、パソコンにとって「時間の長さ」を表す特別なデータの形です。たとえば「5日」や「3時間」など、単なる数ではなく、時間として意味を持った情報です。
それをdatetime(日付情報)と組み合わせることで、「今から5日後」「2時間前」などを自由に計算できるようになります。
また、日付の違いを計算した結果としてもtimedeltaが返ってくるので、未来や過去の距離を測るものさしのような役割も持っています。
8. timedeltaを使った現実的な例
以下のような場面でtimedeltaはとても便利です。
- 予約システムで「1週間後の予定日」を自動計算
- 会員登録から30日後にリマインドメールを送る
- 誕生日まであと何日かをカウントダウン
- 提出期限の24時間前に通知
どれも、日付の加算・減算が必要な処理ですね。
9. timedeltaでエラーを防ぐコツ
timedeltaの中に使うキーワード(daysなど)を間違えると、エラーになります。特にdayやhourと書いてしまうとエラーになるので、必ず複数形days・hoursと書くようにしましょう。