datetimeの比較について紹介します datetimeモジュールは標準ライブラリなので、pipで特別にインストールする必要はありません。
目次
datetimeの比較
datetimeオブジェクトは演算子で比較することが可能です。
# 二つのdatetimeオブジェクトの間に比較演算子を使います。
datetimeオブジェクト1 比較演算子 datetimeオブジェクト2
サンプルは以下になります。
import datetime
date_one = datetime.datetime(2020,5,18,15,00)
date_two = datetime.datetime(2019,5,18,15,00)
print(date_one==date_two:,date_one==date_two)
# date_one==date_two: False
print(date_one!=date_two:,date_one!=date_two)
# date_one!=date_two: True
print(date_one<date_two:,date_one<date_two)
# date_one<date_two: False
print(date_one>date_two:,date_one>date_two)
# date_one>date_two: True
print(date_one<=date_two:,date_one<=date_two)
# date_one<=date_two: False
print(date_one>=date_two:,date_one>=date_two)
# date_one>=date_two: True
現在時刻とdatetimeを比較
より実践的に現在時刻と特定の日時を比較する方法は以下になります。
現在時刻はdatetime.now()で取得します。
# 今のdatetimeオブジェクト 比較したいdatetimeオブジェクト
datetime.datetime.now() 比較演算子 datetimeオブジェクト1
サンプルは以下になります。
import datetime
date_now = datetime.datetime.now()
date_one = datetime.datetime(2019,5,16,15,00)
print(date_now==date_one:,date_now==date_one)
# date_now==date_one: False
print(date_now!=date_one:,date_now!=date_one)
# date_now!=date_one: True
print(date_now<date_one:,date_now<date_one)
# date_now<date_one: False
print(date_now>date_one:,date_now>date_one)
# date_now>date_one: True
print(date_now<=date_one:,date_now<=date_one)
# date_now<=date_one: False
print(date_now>=date_one:,date_now>=date_one)
# date_now>=date_one: True
datetimeで減算(引き算)をして差を取得
datetimeオブジェクトで差を取得するのは以下になります。
# 二つのdatetimeオブジェクトの間に-演算子を使います。
datetimeオブジェクト1 - datetimeオブジェクト2
演算子を使った後は型はdatetime.datetimeからdatetime.timedeltaになります。
timedeltaはtimedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
があるのですが、timedeltaオブジェクトが内部に保持しているのは引数で指定された週や時間の値から換算され
た日数、秒数、マイクロ秒数のみなので、days,seconds,microsecondsしかアクセスできません。
サンプルは以下になります。
import datetime
date_now = datetime.datetime.now()
date_one = datetime.datetime(2021,7,23,20)
diff = date_one- date_now
print(東京オリンピック開催まで:,diff)
# 東京オリンピック開催まで: 431 days, 5:11:44.725436
print(diffのタイプ:,type(diff))
# diffのタイプ: <class 'datetime.timedelta'>
print(東京オリンピック開催まで日数:,str(diff.days)+日)
# 東京オリンピック開催まで日数: 431日
print(東京オリンピック開催までの秒数:,str(diff.seconds)+秒)
# 東京オリンピック開催までの秒数: 18704秒
print(東京オリンピック開催までのマイクロ秒数:,str(diff.microseconds)+マイクロ秒)
# 東京オリンピック開催までのマイクロ秒数: 725436マイクロ秒
datetimeで加算(足し算)をして日時を進める
加算をして日にちを進めることも可能です。
# datetimeオブジェクトに+を使ってtimedeltaオブジェクトを加算させます。
datetimeオブジェクト + timedeltaオブジェクト
サンプルは以下になります。
import datetime
date_now = datetime.datetime.now()
plus_week = datetime.timedelta(weeks=1)
plus_days = datetime.timedelta(days=1)
plus_hours = datetime.timedelta(hours=1)
plus_minutes = datetime.timedelta(minutes=30)
plus_seconds = datetime.timedelta(seconds = 120)
plus_milliseconds = datetime.timedelta(milliseconds=10**4)
plus_microseconds = datetime.timedelta(microseconds=10**7)
print(今:,date_now)
# 今: 2020-05-18 14:49:53.380293
print(今から一週間後:,date_now+plus_week)
# 今から一週間後: 2020-05-25 14:49:53.380293
print(今から一日後:,date_now+plus_days)
# 今から一日後: 2020-05-19 14:49:53.380293
print(今から一時間後:,date_now+plus_hours)
# 今から一時間後: 2020-05-18 15:49:53.380293
print(今から30分後:,date_now+plus_minutes)
# 今から30分後: 2020-05-18 15:19:53.380293
print(今から120秒後:,date_now+plus_seconds)
# 今から120秒後: 2020-05-18 14:51:53.380293
print(今から10000ミリ秒後(10秒後):,date_now+plus_milliseconds)
# 今から10000ミリ秒後(10秒後): 2020-05-18 14:50:03.380293
print(今から10000000マイクロ秒後(10秒後):,date_now+plus_microseconds)
# 今から10000000マイクロ秒後(10秒後): 2020-05-18 14:50:03.380293