【Python】日時・時刻の差分を取得する

Pyhtonを使用していると2時刻間の差分を取得したい!と考えることも多いでしょう。しかしながら文字列のままだと扱いにくいですよね。このようなときはdatetimeモジュールを使用すると簡単に算出できるので、その方法をご紹介します。

文字列⇒datetimeオブジェクトへの変換

今回はdatetimeオブジェクトを用いて日時・時刻の差分を取得します。それに先立って文字列を使用している場合、文字列をdatetimeオブジェクトに変換しましょう。もともとdatetimeオブジェクトを使用している場合は必要ありません。

# -*- coding: utf-8 -*-
from datetime import datetime 

date1 = "2020/12/14"

date1_datetime = datetime.strptime(date1, '%Y/%m/%d')

print(date1_datetime)
#2020-12-14 00:00:00

print(type(date1_datetime))
#<class 'datetime.datetime'>

上手くdatetimeオブジェクトへ変換できてますね。文字列からdatetimeオブジェクトにするとき、strptimeの第二引数の部分で年、月、日等のフォーマットを指定しています。指定していない部分はデフォルトの値が使用されます。

年(year)は %Y, 月(month)は%m,日(day)は%d, 時間(hour)は%H, 分(minutes)は%M,秒(seconds)は%Sで受け取ります。

例えば文字列が

test = "12/14 14:59:34"

の場合、このようにして受け取ることができます。

test_datetime = datetime.strptime(test, '%m/%d %H:%M:%S')

print(test_datetime)
#1900-12-14 14:59:34

print(type(test_datetime))
#<class 'datetime.datetime'>

2点間の差分を取得

以下の2点の時間の差分を取ろうと思います。

date1 = "2020/11/12 12:12:12"
date2 = "2020/12/24 15:34:14" 

datetimeへ変換して、二つのオブジェクトの引き算をすることで2点間の差分を取得できます。

#datetimeへ変換
date1_datetime = datetime.strptime(date1, '%Y/%m/%d %H:%M:%S')
date2_datetime = datetime.strptime(date2, '%Y/%m/%d %H:%M:%S')

date_diff = date2_datetime - date1_datetime

print(date_diff)
#42 days, 3:22:02

print(date_diff.days)
#42

print(type(date_diff))
#<class 'datetime.timedelta'>

二点間の差分を取ることができました。

python

Posted by bakuekicom