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. 日付の引き算(過去の日付を求める)
「1週間前のデータを確認したい」「3日前のログを抽出したい」といった場面で役立つのが、timedeltaを使った日付の引き算です。
足し算のときと同じように、直感的なコードで過去の特定の日時を算出できます。
例えば「今日から3日前」を求めたい場合は、現在時刻からdays=3を指定したtimedeltaを引くだけです。
Pythonでは算術演算子(-)がそのまま使えるため、数式の書き方に慣れていないプログラミング未経験の方でも迷わずに記述できます。
from datetime import datetime, timedelta
# 現在の日時を取得
now = datetime.now()
# 3日前の日付を計算
three_days_ago = now - timedelta(days=3)
print("現在の日時:", now)
print("3日前:", three_days_ago)
現在の日時: 2026-01-30 13:25:00.000000
3日前: 2026-01-27 13:25:00.000000
このように、引き算の結果も自動的に「日付オブジェクト」として生成されるため、そのまま他の処理に利用可能です。
days(日)以外にも、weeks(週)やhours(時間)を引くことで、分単位や秒単位での細かい過去の計算も自由自在に行えます。
4. timedeltaで使える全単位と柔軟な指定方法
Pythonのtimedelta関数は、日付や時間の計算を直感的に行える非常に便利なツールです。指定できる単位(引数)は多岐にわたり、これらを自由に組み合わせることで「3日と5時間30分後」といった複雑な計算も1行で記述できます。
主に使える単位は以下の通りです:
- days:日単位(1週間なら7など)
- seconds:秒単位
- microseconds:マイクロ秒(100万分の1秒)
- milliseconds:ミリ秒(1000分の1秒)
- minutes:分単位
- hours:時間単位
- weeks:週単位
プログラミング未経験の方でも分かりやすいように、複数の単位を組み合わせた具体的なサンプルコードを見てみましょう。例えば、「現在の時刻から、1週間と3時間15分後」の時間を計算する場合は以下のように記述します。
from datetime import datetime, timedelta
# 現在の時刻を取得
now = datetime.now()
print("現在の時刻:", now)
# 1週間(weeks)、3時間(hours)、15分(minutes)を加算
future_time = now + timedelta(weeks=1, hours=3, minutes=15)
print("1週間と3時間15分後:", future_time)
このように、timedelta(単位=数値)という形式でカンマ区切りで並べるだけで、自動的に合計時間を計算してくれます。なお、月(months)や年(years)は、月によって日数が異なるためtimedeltaの標準引数には含まれていませんが、日常的な「○分後」「○時間前」といった処理にはこれだけで十分対応可能です。初心者の方は、まずこの基本単位の組み合わせに慣れることから始めてみましょう。
5. 複数の単位(日・時間・分)を同時に組み合わせてみよう
これまでは「1日後」や「1時間後」といった単一の計算でしたが、実務では「3日と12時間30分後」のように、複数の単位を組み合わせて計算したいシーンがよくあります。Pythonのtimedeltaを使えば、引数を並べるだけで驚くほど簡単に実現できます。
プログラミングが初めての方でも安心してください。以下のサンプルのように、必要な単位をカンマで区切って指定するだけです。内部で複雑な秒数換算を行う必要はありません。
from datetime import datetime, timedelta
# 現在の日時を基準にする
now = datetime.now()
# 「3日」と「12時間」と「30分」をひとまとめにする
delta = timedelta(days=3, hours=12, minutes=30)
# まとめて加算!
future = now + delta
print("現在の日時:", now.strftime("%Y-%m-%d %H:%M:%S"))
print("3日12時間30分後:", future.strftime("%Y-%m-%d %H:%M:%S"))
現在の日時: 2026-01-30 13:30:00
3日12時間30分後: 2026-02-03 02:00:00
このように、days(日)、hours(時間)、minutes(分)、さらにはseconds(秒)まで、自由な組み合わせで未来や過去の時間を算出できます。この柔軟さが、Pythonで日付操作を行う最大のメリットの一つです。
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と書くようにしましょう。
まとめ
Pythonのtimedeltaで日付計算を理解しよう
Pythonで日付の加算減算を行う際に欠かせないのがtimedeltaですtimedeltaは単なる数値ではなく時間の長さを表現する特別なデータ構造でありdatetimeと組み合わせることで日付操作を直感的かつ正確に行えるようになります初心者がつまずきやすい日付の計算例えば月をまたぐ処理やうるう年の扱いなどもすべて自動で調整されるため複雑な条件分岐を書く必要がなくなりますこの仕組みを理解することでPythonにおける日時処理の基礎がしっかり身につきます
timedeltaの基本と日付加算減算の考え方
timedeltaは日付そのものではなく何日何時間という期間を表しますこの期間をdatetimeに足すことで未来の日付を求め引くことで過去の日付を求めることができます日付と期間を組み合わせるという考え方はとても重要でありプログラミング初心者にとっては新しい概念ですが慣れてしまえば計算はとてもシンプルになります今日の日付に三日を足せば三日後になり七日引けば一週間前になりますこのように数学の足し算引き算の感覚で扱えるのがtimedeltaの大きな特徴です
複数単位の組み合わせと柔軟な時間操作
timedeltaは日だけでなく時間分秒週といった複数の単位を同時に扱うことができます例えば三日十二時間三十分後といった複雑な条件も一行で表現できるため実務でも非常に便利ですこの柔軟性によって予約システムや通知機能など現実的なアプリケーションを簡単に実装できるようになりますまたweeksやhoursminutesを組み合わせることで細かい時間計算も可能になり初心者から中級者へステップアップするための重要なスキルとなります
日付差分計算とtimedeltaの役割
timedeltaは自分で作るだけでなく二つの日付を引き算した結果としても得られますこれにより二つの日付の差分を簡単に求めることができます例えば何日後か何日前かといった情報を取得することでカウントダウン機能や期限管理などを実装できます日付差分は業務システムでも頻繁に使われるためtimedeltaの理解は非常に重要です
実務で役立つtimedelta活用例
timedeltaは予約管理システムやスケジュール管理ログ解析通知機能などさまざまな場面で活躍します例えば一週間後の予約日を自動計算したり会員登録から三十日後にメールを送信したりする処理はすべてtimedeltaで簡単に実装できますまた処理時間の計測や経過時間の表示などにも応用できるためPythonのバックエンド開発では欠かせない技術となっています
初心者が注意すべきポイント
timedeltaを使う際にはキーワードの書き方に注意が必要ですdayshoursminutesのように複数形で指定する必要があります単数形で書くとエラーになるため注意しましょうまた月や年は直接指定できないため日単位で計算する必要がありますこのようなポイントを押さえることでエラーを防ぎスムーズに日付操作ができるようになります
サンプルプログラムで振り返るtimedeltaの使い方
from datetime import datetime, timedelta
# 現在日時を取得
now = datetime.now()
print("現在日時:", now)
# 3日後を計算
after_3_days = now + timedelta(days=3)
print("3日後:", after_3_days)
# 1週間前を計算
before_week = now - timedelta(weeks=1)
print("1週間前:", before_week)
# 複数単位の組み合わせ
complex_time = now + timedelta(days=2, hours=5, minutes=30)
print("2日5時間30分後:", complex_time)
# 日付差分
future = datetime(2026, 12, 31)
diff = future - now
print("差分日数:", diff.days)
生徒
「timedeltaって最初は難しそうに感じましたが日付と期間を足し算するだけでいいんですね」
先生
「その通りです日付そのものではなく時間の長さを扱うという考え方がポイントですこれが理解できると日付操作は一気に楽になります」
生徒
「三日後や一週間前も簡単に出せてびっくりしましたカレンダーを気にしなくていいのは便利ですね」
先生
「Pythonが自動で調整してくれるので人間が計算する必要がありませんこれがプログラミングの強みです」
生徒
「複数の時間を組み合わせるのも簡単でした実務でも使えそうです」
先生
「はい予約管理や通知機能など多くの場面で使われますtimedeltaを使いこなせると実践的なプログラムが書けるようになりますよ」