【Python】datetime(日時)を引き算する方法を解説

Pythonで日時の操作を行う際、datetimeモジュールが非常に便利です。

この記事では、datetimeモジュールを使って日時の引き算を行い、その差を求める方法を解説します。

目次から探す

日時の表現と操作

Pythonで日時を扱うには、datetimeモジュールを使用します。

このモジュールには、日時を表現するためのオブジェクトや、日時の操作を行うための関数が用意されています。

datetimeオブジェクトの生成

datetimeモジュールのdatetimeクラスを使って、日時を表現するオブジェクトを生成します。

以下のように、年、月、日、時、分、秒を引数として与えることができます。


from datetime import datetime
dt = datetime(2021, 12, 1, 10, 30, 45)
print(dt)  # 2021-12-01 10:30:45

また、現在の日時を取得するには、 datetime.now() 関数を使用します。


from datetime import datetime
now = datetime.now()
print(now)  # 現在の日時が表示されます(例:2021-12-01 10:30:45)

日時のフォーマットと変換

日時オブジェクトを文字列に変換するには、strftimeメソッドを使用します。

引数には、変換後の日時のフォーマットを指定します。


from datetime import datetime
dt = datetime(2021, 12, 1, 10, 30, 45)
formatted_dt = dt.strftime('%Y/%m/%d %H:%M:%S')
print(formatted_dt)  # 2021/12/01 10:30:45

逆に、文字列から日時オブジェクトに変換するには、datetime.strptimeメソッドを使用します。

引数には、変換元の文字列と、そのフォーマットを指定します。


from datetime import datetime
date_str = '2021/12/01 10-30-45'
dt = datetime.strptime(date_str, '%Y/%m/%d %H-%M-%S')
print(dt)  # 2021-12-01 10:30:45

timedeltaクラスを使った日時の引き算

Pythonのdatetimeモジュールには、日時の引き算を行うためのtimedeltaクラスが用意されています。

このクラスを使って、簡単に日時の差を計算することができます。

timedeltaクラスの概要

timedeltaクラスは、日時の差を表現するためのクラスです。

このクラスを使うことで、日時の加算や減算、さらには日時の差を求めることができます。

timedeltaクラスは、日、時、分、秒、マイクロ秒の単位で日時の差を表現します。

timedeltaオブジェクトの生成

timedeltaオブジェクトを生成するには、datetime.timedeltaクラスのコンストラクタを使用します。

以下のように引数を指定して、日時の差を表現するオブジェクトを作成できます。


from datetime import timedelta
# 1日と3時間の差を表現するtimedeltaオブジェクトを生成
delta = timedelta(days=1, hours=3)
print(delta)  # 出力: 1 day, 3:00:00

timedeltaオブジェクトを使った日時の引き算

timedeltaオブジェクトを使って、日時の引き算を行うことができます。

以下の例では、現在の日時から1日と3時間前の日時を計算しています。


from datetime import datetime, timedelta
# 現在の日時を取得
now = datetime.now()
print("現在の日時:", now)
# 1日と3時間の差を表現するtimedeltaオブジェクトを生成
delta = timedelta(days=1, hours=3)
# 現在の日時から1日と3時間前の日時を計算
past = now - delta
print("1日と3時間前の日時:", past)

また、2つの日時の差を求めることもできます。

以下の例では、指定した2つの日時の差を計算しています。


from datetime import datetime, timedelta
# 2つの日時を生成
dt1 = datetime(2021, 1, 1, 12, 0, 0)
dt2 = datetime(2021, 1, 2, 15, 30, 0)
# 日時の差を求める
delta = dt2 - dt1
print("日時の差:", delta)  # 出力: 1 day, 3:30:00

このように、timedeltaクラスを使って日時の引き算や差を求めることができます。

これにより、日時の計算が容易になります。

目次から探す