Python|日付や時刻に加算・減算する

1. はじめに

Pythonで日付や時刻に加算・減算する方法は、日付操作やスケジュール管理、データの期間処理など、実務でも頻繁に登場します。この記事では、Python|日付や時刻に加算・減算する方法を、初心者にもわかりやすく丁寧に解説します。

datetimeモジュールを中心に、日付を1日進めたり、1時間前の時刻を求めたりといった操作方法を具体的なコード付きで紹介します。Python独学中の方や、実務での日付処理に悩んでいる方にとって、必見の内容です。

 

2. Pythonで日付や時刻を加算・減算する基本

2-1. datetimeとtimedeltaの基本構文

Pythonで日付や時刻に対して加算・減算を行うには、datetimeモジュールのtimedeltaクラスを使用します。

from datetime import datetime, timedelta

# 現在の日付と時刻を取得
now = datetime.now()

# 1日後の日付を計算
next_day = now + timedelta(days=1)

# 1時間前の時刻を計算
one_hour_ago = now - timedelta(hours=1)

print("現在:", now)
print("1日後:", next_day)
print("1時間前:", one_hour_ago)

実行結果:

現在: 2025-07-23 14:00:00
1日後: 2025-07-24 14:00:00
1時間前: 2025-07-23 13:00:00

2-2. timedeltaで指定できる引数

timedeltaでは、以下のような引数が指定できます。

  • days: 日数
  • seconds: 秒数
  • microseconds: マイクロ秒
  • milliseconds: ミリ秒
  • minutes: 分
  • hours: 時間
  • weeks: 週数

2-3. 日付のみ(date型)に加算・減算する

date型にもtimedeltaを使って加減算が可能です。

from datetime import date, timedelta

today = date.today()
tomorrow = today + timedelta(days=1)
yesterday = today - timedelta(days=1)

print("今日:", today)
print("明日:", tomorrow)
print("昨日:", yesterday)

実行結果:

今日: 2025-07-23
明日: 2025-07-24
昨日: 2025-07-22

 

3. よくある使い方・応用例

3-1. 数週間先・数ヶ月先の日付を求める

週単位での加算はtimedelta(weeks=n)で対応できますが、月単位の加減算には標準のdatetimeモジュールでは対応していないため、dateutilライブラリが便利です。

3-1-1. 週単位の加算

from datetime import date, timedelta

today = date.today()
two_weeks_later = today + timedelta(weeks=2)

print("2週間後:", two_weeks_later)

実行結果:

2週間後: 2025-08-06

3-1-2. 月単位の加算(dateutil使用)

pip install python-dateutil でインストールが必要です。

from datetime import date
from dateutil.relativedelta import relativedelta

today = date.today()
next_month = today + relativedelta(months=1)
three_months_ago = today - relativedelta(months=3)

print("来月:", next_month)
print("3ヶ月前:", three_months_ago)

実行結果:

来月: 2025-08-23
3ヶ月前: 2025-04-23

3-2. 期限切れチェック(今日より前の日付かを判定)

from datetime import date

deadline = date(2025, 7, 20)
today = date.today()

if deadline < today:
    print("期限切れです")
else:
    print("まだ間に合います")

実行結果:

期限切れです

3-3. 経過日数の計算

from datetime import date

start_date = date(2025, 1, 1)
today = date.today()

delta = today - start_date
print(f"{delta.days}日が経過しました")

実行結果:

204日が経過しました

 

4. 注意点・エラー対策

4-1. 時間(time型)への加減算はできない

datetime.time型単体では、直接timedeltaを加算・減算できません。一度datetime型に変換する必要があります。

4-2. 月単位の加減算は標準モジュールでは対応不可

timedeltaでは「月単位」の加算はできません。これは月によって日数が異なるためです。dateutil.relativedeltaの利用が推奨されます。

4-3. 型の不一致に注意

datedatetimeは別の型です。混在させて加減算するとTypeErrorになることがあります。

from datetime import date, datetime, timedelta

d = date.today()
dt = datetime.now()

# 以下はエラーになります
# result = dt - d  # TypeError

 

5. まとめ

今回は「Python|日付や時刻に加算・減算する」方法について、基本構文から応用例までを詳しく解説しました。

  • timedeltaで日・時間・週単位の加減算が可能
  • 月単位の処理にはdateutil.relativedeltaが便利
  • 実務では、スケジュール管理・期限チェックなどで多用

学習のコツとしては、「まず現在日付を取得 → timedeltaで加減算 → 実行して結果を見る」という流れで少しずつ確認することです。
ぜひ自分のプロジェクトにも取り入れて、実務に役立ててください!

タイトルとURLをコピーしました