Python
では日付や時刻を加算したり減算したりすることができます。2つの日付や時刻の値の差分を取得することもできます。今回は Python
での日付の加算・減算・値の比較の方法について説明したいと思います。
前提条件
- Python : 3.9.1
timedelta クラスについて
今回の日付の加算・減算では、 Python
の標準ライブラリである datetime
モジュールの timedelta
オブジェクトを使用します。
timedelta
オブジェクトは経過時間として2つの日付や時刻の差を表します。
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
全ての引数が任意項目で、デフォルト値は 0
です。引数の値は整数、浮動小数点数でも良く、正の値でも負の値でも設定できます。
日付の加算
日付の加算を行う場合、以下のように実装します。
import datetime
# 現在日時を取得
dt1 = datetime.datetime.now()
print(dt1)
# 2022-02-16 17:38:35.425517
# 試しに2日加算してみる
dt2 = dt1 + datetime.timedelta(days=2)
print(dt2)
# 2022-02-18 17:38:35.425517
時刻の加算
時刻の加算は以下のように実装します。
import datetime
# 現在日時を取得
dt1 = datetime.datetime.now()
print(dt1)
# 2022-02-16 17:41:16.127730
# 6時間加算
dt2 = dt1 + datetime.timedelta(hours=6)
print(dt2)
# 2022-02-16 23:41:16.127730
日付の減算
減算するには引数に負の数を設定します。
import datetime
# 現在日時を取得
dt1 = datetime.datetime.now()
print(dt1)
# 2022-02-16 17:43:36.631908
# 1日前を取得する
dt2 = dt1 + datetime.timedelta(days=-1)
print(dt2)
# 2022-02-15 17:43:36.631908
時刻の減算
import datetime
# 現在日時を取得
dt1 = datetime.datetime.now()
print(dt1)
# 2022-02-16 17:47:28.663650
# 3時間減算する
dt2 = dt1 + datetime.timedelta(hours=-3)
print(dt2)
# 2022-02-16 14:47:28.663650
日付の比較
以下のように実装すると日付の差分が求められます。
import datetime
dt1 = datetime.date(2022,1,1)
print(dt1)
# 2022-01-01
dt2 = datetime.date(2022,2,1)
print(dt2)
# 2022-02-01
diff = dt2 - dt1
print(diff)
# 31 days, 0:00:00
diff = dt1 - dt2
print(diff)
# -31 days, 0:00:00
datetime
モジュールの date
オブジェクトではなく、 datetime
オブジェクトを使用すると時刻の差分まで取得することができます。
大小比較もできます。
print(dt1 < dt2)
# True
print(dt1 > dt2)
# False
このように値の比較を行うことができます。
ちなみに、「 diff = dt2 - dt1
」みたいに演算した結果も timedelta
型のインスタンスとして取得できるので、日にちだけとか時間だけを取得することもできます。
print(diff.days)
# -31
timedelta
型のインスタンスとしてデータを取得できたとしても、 datetime
モジュールの date
オブジェクトを使用した場合は、 timedelta
型のインスタンスの hours
などを取得しようとするとエラーになりますので要注意です。
print(diff.hours)
# AttributeError: 'datetime.timedelta' object has no attribute 'hours'
最後に
日付を演算した後にどのようなデータ型になっているのかをしっかり把握しておかないと、予期せぬ不具合を引き起こす原因ともなりますので、日付の加算・減算や値の比較方法をしっかり覚えておきたいですね。
コメント