Pythonのtimedeltaで日付の加算・減算をしよう!初心者でもわかる時間操作の基本
生徒
「Pythonで、今日から3日後の日付を計算したいんですが、どうすればいいですか?」
先生
「それはtimedeltaという道具を使えば簡単にできますよ。」
生徒
「タイムデルタ…?聞いたことがない言葉です。難しくないですか?」
先生
「安心してください。タイムデルタは日付の足し算や引き算をするための、やさしい道具です。今から丁寧に説明していきましょう。」
1. timedeltaとは?Pythonで日付を加算・減算する方法
Python(パイソン)で日付を扱うときは、datetime(デイトタイム)モジュールを使います。その中でもtimedelta(タイムデルタ)は、「日付をずらす」ために使うとても便利な道具です。
たとえば、「今日から3日後はいつ?」とか「5日前はいつ?」といった計算が簡単にできるようになります。
2. timedeltaの基本的な使い方
まずは、timedeltaを使って今日の日付に日数を加えてみましょう。以下のサンプルでは、今日から7日後の日付を求めています。
from datetime import datetime, timedelta
today = datetime.today()
after_7_days = today + timedelta(days=7)
print("今日:", today)
print("7日後:", after_7_days)
今日: 2025-09-03 12:34:56.789012
7日後: 2025-09-10 12:34:56.789012
ポイント:timedelta(days=7)と書くことで「7日」という時間のかたまりを作り、それを+で現在の日付に加えています。
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と書くようにしましょう。