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. 型の不一致に注意
date
とdatetime
は別の型です。混在させて加減算するとTypeError
になることがあります。
from datetime import date, datetime, timedelta
d = date.today()
dt = datetime.now()
# 以下はエラーになります
# result = dt - d # TypeError
5. まとめ
今回は「Python|日付や時刻に加算・減算する」方法について、基本構文から応用例までを詳しく解説しました。
timedelta
で日・時間・週単位の加減算が可能- 月単位の処理には
dateutil.relativedelta
が便利 - 実務では、スケジュール管理・期限チェックなどで多用
学習のコツとしては、「まず現在日付を取得 → timedeltaで加減算 → 実行して結果を見る」という流れで少しずつ確認することです。
ぜひ自分のプロジェクトにも取り入れて、実務に役立ててください!