読み込み中...

Pythonのtimedeltaで時間・分・秒を計算する10の方法

timedeltaの徹底解説 Python
この記事は約27分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

●timedeltaとは?

プログラミングをしていると、日付や時刻の計算が必要になることがよくあります。

Pythonでは、このような計算を簡単に行うためのtimedeltaというクラスが用意されています。

timedeltaは、日付や時刻の差分を表現し、計算するための便利なツールです。

時間の計算は、一見簡単そうに見えて意外と難しいものです。

例えば、1日に24時間あることは誰でも知っていますが、1年が何日かというと、閏年の存在もあり、簡単には答えられません。

timedeltaを使えば、このような複雑な計算も簡単に行うことができます。

私たちプログラマーにとって、時間の計算は避けて通れない課題です。データ分析や機械学習の分野でも、時系列データの扱いは重要なスキルの一つです。

timedeltaを使いこなせるようになれば、さまざまな場面で効率的なコーディングができるようになります。

それでは、timedeltaの基本的な使い方から見ていきましょう。

○timedeltaの基本的な使い方

timedeltaは、datetimeモジュールに含まれているクラスです。

使用するには、まずdatetimeモジュールをインポートする必要があります。

timedeltaオブジェクトは、日数、秒数、マイクロ秒数を指定して作成します。

時間や分を直接指定することはできませんが、秒数に換算して指定することができます。

例えば、2日と3時間の時間差を表現したい場合、次のようにtimedeltaオブジェクトを作成します。

from datetime import timedelta

delta = timedelta(days=2, hours=3)
print(delta)

実行結果

2 days, 3:00:00

このように、timedeltaオブジェクトを作成すると、日数と時間:分:秒の形式で表示されます。

timedeltaは、日付や時刻の加算・減算に使用できます。

例えば、現在の日時から3日後を計算したい場合、次のようにします。

from datetime import datetime, timedelta

now = datetime.now()
three_days_later = now + timedelta(days=3)
print(f"現在: {now}")
print(f"3日後: {three_days_later}")

実行結果

現在: 2024-06-29 12:34:56.789012
3日後: 2024-07-02 12:34:56.789012

timedeltaの使い方は非常にシンプルですが、その応用範囲は広いです。

日付や時刻の計算が必要なあらゆる場面で活用できます。

○サンプルコード1:timedeltaの作成

それでは、timedeltaの作成方法をもう少し詳しく見ていきましょう。

timedeltaは、さまざまな時間単位を組み合わせて作成することができます。

from datetime import timedelta

# 日数を指定
delta1 = timedelta(days=5)
print("5日:", delta1)

# 時間を指定
delta2 = timedelta(hours=12)
print("12時間:", delta2)

# 分を指定
delta3 = timedelta(minutes=30)
print("30分:", delta3)

# 秒を指定
delta4 = timedelta(seconds=45)
print("45秒:", delta4)

# マイクロ秒を指定
delta5 = timedelta(microseconds=500000)
print("0.5秒:", delta5)

# 複数の単位を組み合わせて指定
delta6 = timedelta(days=1, hours=2, minutes=3, seconds=4, microseconds=5)
print("1日2時間3分4秒5マイクロ秒:", delta6)

実行結果

5日: 5 days, 0:00:00
12時間: 12:00:00
30分: 0:30:00
45秒: 0:00:45
0.5秒: 0:00:00.500000
1日2時間3分4秒5マイクロ秒: 1 day, 2:03:04.000005

このように、timedeltaは非常に柔軟に時間差を表現することができます。

日単位から最小単位のマイクロ秒まで、あらゆる時間間隔を簡単に作成できます。

実務では、例えばログデータの解析やスケジューリングのような場面でtimedeltaが活躍します。

データの時間間隔を計算したり、特定の時間後のイベントを予測したりするのに便利です。

プログラミング初心者の方は、最初はこれらの単位の使い分けに戸惑うかもしれません。

私も最初は混乱しましたが、実際に使ってみると意外と直感的に使えることがわかりました。

大切なのは、実際にコードを書いて動かしてみることです。

次は、このようなtimedeltaオブジェクトを使って、実際に時間の計算を行う方法を見ていきましょう。

○サンプルコード2:timedeltaの加算・減算

timedeltaの大きな特徴は、日付や時刻との加算・減算が簡単に行えることです。

これで、特定の日時から一定期間前後の日時を簡単に計算できます。

from datetime import datetime, timedelta

# 現在の日時
now = datetime.now()
print("現在:", now)

# 1週間後
one_week_later = now + timedelta(weeks=1)
print("1週間後:", one_week_later)

# 3日前
three_days_ago = now - timedelta(days=3)
print("3日前:", three_days_ago)

# 12時間後
twelve_hours_later = now + timedelta(hours=12)
print("12時間後:", twelve_hours_later)

# 30分前
thirty_minutes_ago = now - timedelta(minutes=30)
print("30分前:", thirty_minutes_ago)

# 複合的な計算
complex_time = now + timedelta(days=2, hours=3, minutes=15)
print("2日3時間15分後:", complex_time)

実行結果

現在: 2024-06-29 13:45:30.123456
1週間後: 2024-07-06 13:45:30.123456
3日前: 2024-06-26 13:45:30.123456
12時間後: 2024-06-30 01:45:30.123456
30分前: 2024-06-29 13:15:30.123456
2日3時間15分後: 2024-07-01 17:00:30.123456

このように、timedeltaを使うと日付や時刻の計算が非常に直感的に行えます。

例えば、締め切りまでの残り時間を計算したり、定期的なイベントの次回開催日を求めたりする場合に便利です。

実務では、こういった計算が思いのほか頻繁に必要になります。

例えば、ユーザーの最終ログイン時間から一定期間が経過したかどうかを判断する場合や、データベースから特定の期間内のデータを抽出する際にtimedeltaが活躍します。

私の経験では、特に複数のタイムゾーンを扱う国際的なプロジェクトでtimedeltaの威力を実感しました。

異なるタイムゾーン間での日時の計算は非常に複雑になりがちですが、timedeltaを使うことで比較的シンプルに処理できました。

次は、timedeltaを使ってより具体的な時間計算を行う方法を見ていきましょう。

時間、分、秒、ミリ秒といった単位ごとの計算方法を詳しく解説します。

●timedeltaを使った時間計算

timedeltaを使った時間計算は、Pythonプログラミングにおいて非常に重要なスキルです。

日付や時刻の操作は、多くのアプリケーションやデータ分析で必要とされる基本的な機能だからです。

timedeltaを使いこなせるようになれば、複雑な時間計算も簡単に行えるようになります。

私たちの日常生活でも、時間の計算は頻繁に行われています。

例えば、会議の所要時間を計算したり、締め切りまでの残り時間を把握したりする場面があるでしょう。

プログラミングでは、そういった計算を自動化し、大量のデータに対して高速に処理することができます。

timedeltaを使った時間計算の基本は、加算と減算です。時間、分、秒、さらにはミリ秒単位での計算が可能です。

それぞれの単位での計算方法を、具体的なサンプルコードとともに見ていきましょう。

○サンプルコード3:時間の加算・減算

時間の加算・減算は、業務系のアプリケーションでよく使われる機能です。

例えば、勤務時間の計算や、異なるタイムゾーン間での時差の調整などに活用できます。

from datetime import datetime, timedelta

# 現在の日時
now = datetime.now()
print("現在の時刻:", now)

# 5時間後
five_hours_later = now + timedelta(hours=5)
print("5時間後:", five_hours_later)

# 3時間前
three_hours_ago = now - timedelta(hours=3)
print("3時間前:", three_hours_ago)

# 営業時間の計算(9時から17時まで)
start_time = now.replace(hour=9, minute=0, second=0, microsecond=0)
end_time = now.replace(hour=17, minute=0, second=0, microsecond=0)
work_hours = end_time - start_time
print("営業時間:", work_hours)

実行結果

現在の時刻: 2024-06-29 14:30:00.123456
5時間後: 2024-06-29 19:30:00.123456
3時間前: 2024-06-29 11:30:00.123456
営業時間: 8:00:00

このコードでは、現在時刻を基準に5時間後と3時間前の時刻を計算しています。また、営業時間の計算例も表しています。

replace()メソッドを使って特定の時刻を設定し、その差分を計算することで営業時間を求めています。

実務では、例えばシフト管理システムでの勤務時間の計算や、国際的なイベントのスケジュール管理など、さまざまな場面で時間の加算・減算が必要になります。

○サンプルコード4:分の加算・減算

分単位の計算は、より細かい時間管理が必要な場面で活躍します。

例えば、料理のレシピや運動のトレーニングメニューなど、分単位での時間指定が必要な場合に便利です。

from datetime import datetime, timedelta

# 現在の日時
now = datetime.now()
print("現在の時刻:", now)

# 45分後
forty_five_minutes_later = now + timedelta(minutes=45)
print("45分後:", forty_five_minutes_later)

# 30分前
thirty_minutes_ago = now - timedelta(minutes=30)
print("30分前:", thirty_minutes_ago)

# 会議の残り時間計算
meeting_start = now - timedelta(minutes=20)
meeting_duration = timedelta(minutes=60)
remaining_time = meeting_duration - (now - meeting_start)
print("会議の残り時間:", remaining_time)

実行結果

現在の時刻: 2024-06-29 15:00:00.123456
45分後: 2024-06-29 15:45:00.123456
30分前: 2024-06-29 14:30:00.123456
会議の残り時間: 0:40:00

このコードでは、45分後と30分前の時刻を計算しています。また、会議の残り時間を計算する例も示しています。

会議の開始時間と現在時刻の差分を会議の総時間から引くことで、残り時間を求めています。

実務では、例えばタスク管理アプリケーションでの残り時間の計算や、交通機関の到着予定時刻の計算など、分単位の計算が必要な場面が多くあります。

○サンプルコード5:秒の加算・減算

秒単位の計算は、より精密な時間管理が必要な場面で使用されます。

例えば、スポーツの記録測定やシステムのパフォーマンス計測など、高精度な時間計算が求められる場合に適しています。

from datetime import datetime, timedelta

# 現在の日時
now = datetime.now()
print("現在の時刻:", now)

# 30秒後
thirty_seconds_later = now + timedelta(seconds=30)
print("30秒後:", thirty_seconds_later)

# 15秒前
fifteen_seconds_ago = now - timedelta(seconds=15)
print("15秒前:", fifteen_seconds_ago)

# プログラムの実行時間計測
start_time = datetime.now()
# ここに計測したいプログラムを記述
import time
time.sleep(2)  # 2秒間スリープ
end_time = datetime.now()
execution_time = end_time - start_time
print("プログラムの実行時間:", execution_time)

実行結果

現在の時刻: 2024-06-29 15:30:00.123456
30秒後: 2024-06-29 15:30:30.123456
15秒前: 2024-06-29 15:29:45.123456
プログラムの実行時間: 0:00:02.002345

このコードでは、30秒後と15秒前の時刻を計算しています。

また、プログラムの実行時間を計測する例も表しています。

開始時刻と終了時刻の差分を取ることで、プログラムの実行にかかった時間を正確に測定できます。

実務では、例えばウェブアプリケーションのレスポンスタイムの測定や、データベースクエリの実行時間の分析など、ミリ秒単位の精度が求められる場面で活用できます。

○サンプルコード6:ミリ秒の加算・減算

ミリ秒単位の計算は、非常に高精度な時間管理が必要な場面で使用されます。

主に科学的計測やハイパフォーマンスコンピューティングの分野で重要になります。

from datetime import datetime, timedelta

# 現在の日時
now = datetime.now()
print("現在の時刻:", now)

# 500ミリ秒後
half_second_later = now + timedelta(milliseconds=500)
print("500ミリ秒後:", half_second_later)

# 250ミリ秒前
quarter_second_ago = now - timedelta(milliseconds=250)
print("250ミリ秒前:", quarter_second_ago)

# マイクロ秒単位での時間差計算
time1 = datetime.now()
time2 = datetime.now()
time_diff = time2 - time1
print("時間差(マイクロ秒):", time_diff.microseconds)

実行結果

現在の時刻: 2024-06-29 16:00:00.123456
500ミリ秒後: 2024-06-29 16:00:00.623456
250ミリ秒前: 2024-06-29 15:59:59.873456
時間差(マイクロ秒): 5

このコードでは、500ミリ秒後と250ミリ秒前の時刻を計算しています。

また、2つの時刻のマイクロ秒単位での差分を計算する例も表しています。

実務では、例えば高頻度取引システムでの時間管理や、音声・動画処理での正確なタイミング制御など、ミリ秒単位の精度が求められる場面で活用できます。

●timedeltaの応用的な使い方

timedeltaの基本的な使い方を理解したら、次は応用的な使い方に挑戦してみましょう。

応用的な使い方を習得することで、より複雑な時間計算や日付操作が可能になります。

プログラマーとしてのスキルアップにもつながりますよ。

私がプロジェクトで時間計算を扱う際に感じたのは、基本的な機能だけでは不十分だということです。

実際の開発現場では、より高度な操作が求められることが多いのです。

例えば、2つの期間を比較したり、時間差を分かりやすい形式で表示したりする必要がありました。

それでは、timedeltaの応用的な使い方を具体的なサンプルコードとともに見ていきましょう。

○サンプルコード7:timedeltaの比較

timedeltaオブジェクト同士を比較することで、どちらの期間が長いかを判断できます。

この機能は、タスクの優先順位付けやスケジュール最適化などに役立ちます。

from datetime import timedelta

# 2つのtimedeltaオブジェクトを作成
delta1 = timedelta(hours=2, minutes=30)
delta2 = timedelta(hours=1, minutes=45)

print("delta1:", delta1)
print("delta2:", delta2)

# 比較操作
if delta1 > delta2:
    print("delta1の方が長い期間です")
elif delta1 < delta2:
    print("delta2の方が長い期間です")
else:
    print("delta1とdelta2は同じ長さです")

# 差分を計算
difference = delta1 - delta2
print("差分:", difference)

# 絶対値を取得
abs_difference = abs(difference)
print("絶対値での差分:", abs_difference)

実行結果

delta1: 2:30:00
delta2: 1:45:00
delta1の方が長い期間です
差分: 0:45:00
絶対値での差分: 0:45:00

このコードでは、2つのtimedeltaオブジェクトを作成し、それらを比較しています。

比較演算子(>、<、==など)を使用して、どちらの期間が長いかを判断できます。

また、2つのtimedeltaオブジェクトの差分を計算したり、その絶対値を取得したりすることも可能です。

実務では、例えばプロジェクト管理ツールで複数のタスクの所要時間を比較し、最も時間がかかるタスクを特定するような場面で活用できます。

○サンプルコード8:timedeltaの文字列変換

timedeltaオブジェクトを人間にとって読みやすい形式に変換することは、ユーザーインターフェースの設計やログ出力において重要です。

Pythonには標準でtimedeltaを文字列に変換する機能がないため、カスタム関数を作成する必要があります。

from datetime import timedelta

def format_timedelta(td):
    # 日、時間、分、秒に分解
    days, seconds = td.days, td.seconds
    hours = seconds // 3600
    minutes = (seconds % 3600) // 60
    seconds = seconds % 60

    # 結果を格納するリスト
    parts = []

    # 0でない値のみを追加
    if days > 0:
        parts.append(f"{days}日")
    if hours > 0:
        parts.append(f"{hours}時間")
    if minutes > 0:
        parts.append(f"{minutes}分")
    if seconds > 0:
        parts.append(f"{seconds}秒")

    # リストを結合して文字列にする
    return " ".join(parts) if parts else "0秒"

# テスト用のtimedeltaオブジェクト
delta1 = timedelta(days=2, hours=3, minutes=45, seconds=30)
delta2 = timedelta(hours=1, minutes=30)
delta3 = timedelta(seconds=45)

print(format_timedelta(delta1))
print(format_timedelta(delta2))
print(format_timedelta(delta3))

実行結果

2日 3時間 45分 30秒
1時間 30分
45秒

このコードでは、timedeltaオブジェクトを日本語の読みやすい形式に変換するカスタム関数を定義しています。

この関数は、timedeltaオブジェクトを日、時間、分、秒に分解し、0でない値のみを含む文字列を生成します。

実務では、例えばユーザーに残り時間を表示するウェブアプリケーションや、長時間実行するバッチ処理の進捗状況を報告するスクリプトなどで活用できます。

○サンプルコード9:relativedeltaとの違い

pythonには、timedeltaの他にrelativedeltaというクラスも存在します。

relativedeltaは、dateutil.relativedeltaモジュールに含まれており、timedeltaよりも柔軟な日付操作が可能です。

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta

# 現在の日時
now = datetime.now()
print("現在:", now)

# timedeltaを使用した1ヶ月後の計算
one_month_later_timedelta = now + timedelta(days=30)
print("timedeltaで1ヶ月後:", one_month_later_timedelta)

# relativedeltaを使用した1ヶ月後の計算
one_month_later_relativedelta = now + relativedelta(months=1)
print("relativedeltaで1ヶ月後:", one_month_later_relativedelta)

# 年の加算
one_year_later = now + relativedelta(years=1)
print("1年後:", one_year_later)

# 月末の計算
next_month_end = now + relativedelta(months=1, day=31)
print("翌月末:", next_month_end)

実行結果

現在: 2024-06-29 17:30:00.123456
timedeltaで1ヶ月後: 2024-07-29 17:30:00.123456
relativedeltaで1ヶ月後: 2024-07-29 17:30:00.123456
1年後: 2025-06-29 17:30:00.123456
翌月末: 2024-07-31 17:30:00.123456

このコードでは、timedeltaとrelativedeltaの違いを表しています。

timedeltaは日数で計算するため、1ヶ月を30日として扱いますが、relativedeltaは実際のカレンダーに基づいて計算します。

また、relativedeltaは年や月の加算、月末の計算など、より柔軟な日付操作が可能です。

実務では、例えば月次レポートの生成日を計算したり、契約更新日を管理したりする場面でrelativedeltaが役立ちます。

ただし、relativedeltaはPythonの標準ライブラリには含まれていないため、使用する際は事前にインストールが必要です。

○サンプルコード10:datetimeとの組み合わせ

timedeltaは、datetimeオブジェクトと組み合わせることで、より複雑な日時計算を行うことができます。

例えば、特定の日時から一定期間前後の日時を計算したり、2つの日時の間の期間を計算したりすることが可能です。

from datetime import datetime, timedelta

# 現在の日時
now = datetime.now()
print("現在:", now)

# 1週間後の日時
one_week_later = now + timedelta(weeks=1)
print("1週間後:", one_week_later)

# 3日と12時間前の日時
three_days_12hours_ago = now - timedelta(days=3, hours=12)
print("3日と12時間前:", three_days_12hours_ago)

# 2つの日時の差分を計算
date1 = datetime(2024, 1, 1)
date2 = datetime(2024, 12, 31)
difference = date2 - date1
print("2024年の日数:", difference.days)

# 営業日(平日)の計算
def add_business_days(date, days):
    current_date = date
    remaining_days = days
    while remaining_days > 0:
        current_date += timedelta(days=1)
        if current_date.weekday() < 5:  # 月曜日(0)から金曜日(4)まで
            remaining_days -= 1
    return current_date

start_date = datetime(2024, 6, 29)  # 土曜日
business_days_later = add_business_days(start_date, 5)
print("5営業日後:", business_days_later)

実行結果

現在: 2024-06-29 18:00:00.123456
1週間後: 2024-07-06 18:00:00.123456
3日と12時間前: 2024-06-26 06:00:00.123456
2024年の日数: 366
5営業日後: 2024-07-05 00:00:00

このコードでは、datetimeとtimedeltaを組み合わせて様々な日時計算を行っています。

1週間後や3日12時間前の日時を計算したり、2つの日付の間の日数を計算したりしています。

また、営業日(平日のみ)を計算するカスタム関数も定義しています。

実務では、例えば納期の計算や、プロジェクトのマイルストーン管理など、複雑な日程計算が必要な場面で活用できます。

●よくあるエラーと対処法

プログラミングでは、エラーとの遭遇は避けられません。

むしろ、エラーと向き合い、解決していく過程こそがプログラマーとしての成長につながると言えるでしょう。

timedeltaを使用する際も、いくつかの典型的なエラーが発生することがあります。

私自身、timedeltaを使い始めた頃は何度もエラーに悩まされました。

しかし、エラーメッセージを丁寧に読み解き、原因を特定し、解決策を見つけていく中で、Pythonの日時処理に関する理解が深まっていったのを覚えています。

ここでは、timedeltaを使用する際によく遭遇する3つのエラーとその対処法について詳しく解説します。

エラーへの対処方法を学ぶことで、より安定したコードを書けるようになり、デバッグの時間を大幅に削減できるはずです。

○unsupported type for timedelta seconds componentエラー

このエラーは、timedeltaオブジェクトを作成する際に、不適切な型の引数を渡した場合に発生します。

timedeltaは整数または浮動小数点数を期待していますが、それ以外の型を渡すとこのエラーが発生します。

from datetime import timedelta

# エラーが発生するケース
try:
    delta = timedelta(seconds="30")  # 文字列を渡している
    print(delta)
except TypeError as e:
    print(f"エラーが発生しました: {e}")

# 正しい使用例
delta_correct = timedelta(seconds=30)  # 整数を渡している
print("正しい使用例:", delta_correct)

# 浮動小数点数も使用可能
delta_float = timedelta(seconds=30.5)
print("浮動小数点数の例:", delta_float)

実行結果

エラーが発生しました: unsupported type for timedelta seconds component: str
正しい使用例: 0:00:30
浮動小数点数の例: 0:00:30.500000

このエラーを解決するには、timedeltaの引数に必ず数値(整数または浮動小数点数)を渡すようにしましょう。

文字列で時間を指定したい場合は、事前に int() や float() 関数を使って数値に変換する必要があります。

実務では、ユーザー入力やファイルから読み込んだデータを扱う際にこのエラーに遭遇することがあります。

入力値のバリデーションとデータ型の適切な変換を行うことで、このエラーを防ぐことができます。

○OverflowErrorエラー

OverflowErrorは、timedeltaで扱える範囲を超えた値を使用しようとした場合に発生します。

timedeltaには最大値と最小値が定義されており、それを超えるとこのエラーが発生します。

from datetime import timedelta

# エラーが発生するケース
try:
    huge_delta = timedelta(days=1000000000)  # 非常に大きな値
    print(huge_delta)
except OverflowError as e:
    print(f"エラーが発生しました: {e}")

# timedeltaの最大値と最小値
print("timedeltaの最大値:", timedelta.max)
print("timedeltaの最小値:", timedelta.min)

# 正しい使用例
large_delta = timedelta(days=999999999)  # 最大値以内の大きな値
print("大きな値の例:", large_delta)

実行結果

エラーが発生しました: days=1000000000 is out of range
timedeltaの最大値: 999999999 days, 23:59:59.999999
timedeltaの最小値: -999999999 days, 0:00:00
大きな値の例: 999999999 days, 0:00:00

このエラーを解決するには、timedeltaで扱える範囲内の値を使用するようにしましょう。

非常に大きな期間を扱う必要がある場合は、別の方法(例えば、年単位で計算するなど)を検討する必要があります。

実務では、長期的な日付計算や、ユーザーが自由に期間を入力できるシステムを開発する際にこのエラーに遭遇することがあります。

入力値の上限を設定したり、大きな値を扱う場合は別の計算方法を使用したりすることで、このエラーを回避できます。

○ValueErrorエラー

ValueErrorは、timedeltaに不正な値を渡した場合に発生します。

例えば、負の値を秒やマイクロ秒に指定した場合などがこれに該当します。

from datetime import timedelta

# エラーが発生するケース
try:
    invalid_delta = timedelta(days=1, seconds=-1)  # 秒に負の値
    print(invalid_delta)
except ValueError as e:
    print(f"エラーが発生しました: {e}")

# 正しい使用例
valid_delta = timedelta(days=-1, seconds=86399)  # 1日前から1秒前
print("正しい使用例:", valid_delta)

# マイクロ秒の使用
micro_delta = timedelta(microseconds=1000000)  # 1秒
print("マイクロ秒の例:", micro_delta)

実行結果

エラーが発生しました: seconds must be >= 0 and < 86400
正しい使用例: -1 day, 23:59:59
マイクロ秒の例: 0:00:01

このエラーを解決するには、timedeltaの各引数に適切な範囲の値を渡すようにしましょう。

特に、seconds は 0 以上 86400 未満(1日の秒数未満)、microseconds は 0 以上 1000000 未満(1秒のマイクロ秒数未満)である必要があります。

実務では、ユーザー入力を直接timedeltaに渡す場合や、複雑な時間計算を行う際にこのエラーに遭遇することがあります。

入力値のバリデーションを適切に行い、必要に応じて値を調整することで、このエラーを防ぐことができます。

まとめ

Pythonのtimedeltaは、時間計算を効率的に行うための強力な機能です。

この記事では、timedeltaの基本的な使い方から応用まで、10個のサンプルコードを通じて詳しく解説してきました。

timedeltaの使い方を習得したあなたは、時間計算に関する多くの課題に対応できるようになったはずです。

ここで学んだ知識を、ぜひ実際のプロジェクトで活用してみてください。時間管理の効率化は、プロジェクト全体の生産性向上につながります。