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
クラスを使って日時の引き算や差を求めることができます。
これにより、日時の計算が容易になります。