Pythonで日付の加算・減算をする方法(timedelta の使い方)
生徒
「Pythonで日付を一日進めたり、三日戻したりする方法はありますか?カレンダーを自動で計算できたら便利だと思ったんです。」
先生
「Pythonには、日付の計算を簡単にしてくれるtimedeltaという便利な道具があります。旅行の予定をずらしたり、締め切りの日付を求めたりするときにも役立ちます。」
生徒
「日付の計算って難しそうなイメージがあるのですが、初心者でも扱えますか?」
先生
「大丈夫ですよ。身近な例を交えながら、誰でも理解できるようにゆっくり説明します。」
1. timedeltaとは?
Pythonのdatetimeモジュールには時間を扱うための仕組みがあり、その中でもtimedeltaは「時間の差」を表します。これは「何日進める」「何時間引く」というような、日付の加算や減算を行うための単位のようなものです。日常生活でいうと、カレンダーの紙を一枚ずつめくるようなイメージで、日付を自由に動かせる力を持っています。
2. 基本的な使い方
まずは日付を一日進める基本操作を見てみましょう。これが理解できれば、応用は簡単です。timedeltaでは「日」「時間」「分」などを指定できますが、最初はもっとも分かりやすい「日」を使った例から始めます。
from datetime import datetime, timedelta
today = datetime.now()
next_day = today + timedelta(days=1)
print(next_day)
2025-01-16 10:30:20.123456
このように、日付を一日進めるだけならとてもシンプルです。timedelta(days=1)が「一日分」を意味し、これを現在の日付に足しています。
3. 日付を複数日進めたり戻したりする
仕事の締め切りやイベントの予定を計算するとき、数日単位で動かしたいことがよくあります。たとえば三日後の日付を知りたい場合は「日を三つ足す」、一週間前を知りたいなら「七日引く」という形で計算できます。
from datetime import datetime, timedelta
today = datetime.now()
three_days_later = today + timedelta(days=3)
one_week_ago = today - timedelta(days=7)
print(three_days_later)
print(one_week_ago)
2025-01-18 ...
2025-01-08 ...
日付を足すと未来、引くと過去になります。これは数字の足し算と同じで、とても直感的です。カレンダーの紙を数枚めくるだけ、と考えると理解しやすくなります。
4. 時間や分の計算もできる
timedeltaは「日にち」だけでなく、「時間」や「分」も加算できます。例えば三時間後の時刻を知りたいときはhours=3を指定します。仕事のシフト管理や、アプリで通知を設定したい場合にとても役立ちます。
from datetime import datetime, timedelta
now = datetime.now()
after_three_hours = now + timedelta(hours=3)
print(after_three_hours)
2025-01-15 13:45:00 ...
このように、時間単位の計算もとても簡単にできます。Pythonが自動で「日付が変わるタイミング」も織り込んでくれるため、深夜23時に三時間足した場合も翌日に正しく進みます。
5. 複数の単位を同時に使う
「二日三時間後」や「一週間と二十分前」など、複数の単位を組み合わせたい場合もあります。timedeltaでは複数の引数を同時に指定でき、より細かい時間操作が可能です。
from datetime import datetime, timedelta
now = datetime.now()
mixed = now + timedelta(days=2, hours=3, minutes=20)
print(mixed)
2025-01-17 14:05:00 ...
このような計算は、スケジュール管理アプリやゲームのイベント時間調整などにも応用できます。初心者でも扱いやすく、誤差も出にくいため安心して使えます。
6. timedeltaを使うときに気をつけたいポイント
日付や時間の計算は便利ですが、扱いに慣れるまではいくつか注意したい点があります。まず、timedeltaは「月」や「年」を扱えないという特徴があります。これは月の長さが一定ではなく、年によって日数が異なるためです。そのため月単位の計算は手動で調整する必要があります。また、日付計算は現在時刻を基準に行われるため、プログラムを実行した瞬間によって結果が変わる点も覚えておくと混乱が減ります。
さらに、計算結果を画面に表示する際には日時の形式が長く感じることがあります。その場合はstrftimeを使って好みの形に整形できます。これにより、「年-月-日」だけを表示したり、「時:分」だけを取り出したりと、実際のアプリケーションで使いやすい状態に加工できます。
こうした注意点を押さえれば、日付や時間の計算はとても便利になり、日常生活のさまざまな場面に応用できるようになります。Pythonの扱いに慣れていない初心者でも十分使いこなせる機能ですので、ぜひ自分の身近なスケジュールに当てはめて練習してみてください。