Python プログラム言語

Pythonのdatetimeで比較する。現在時刻や加算・減算の方法を紹介。

こんにちは!TodoONadaの土門(@daikidomon)です。

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

関連記事

-Python, プログラム言語

Copyright© スタートアップIT企業社長のブログ , 2020 All Rights Reserved.