Pythonで時刻の差分を計算する

Pythonである時刻とある時刻の差分を計算してみます。

目次

  1. datetimeモジュールのdatetimeオブジェクトで時刻を表す
  2. 時刻の差はtimedeltaオブジェクトで表す

datetimeモジュールのdatetimeオブジェクトで時刻を表す

Pythonのdatetimeモジュールのdatetimeクラスを使って時刻を表します。このクラスのコンストラクタを使ってオブジェクトを生成します。

D = datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)
変数 内容
year
month
day
hour 時。省略可。既定値は0。
minute 分。省略可。既定値は0。
second 秒。省略可。既定値は0。
microsecond マイクロ秒。省略可。既定値は0。
D datetimeオブジェクト

ミリ秒は無いのですね。

時刻の差はtimedeltaオブジェクトで表す

2つのdatetimeオブジェクトを作ってその差を計算すると、結果はdatetimeモジュールのtimedeltaオブジェクトになります。 timedeltaオブジェクトは内部的にdays、seconds、microsecondsが保持されます。

実際に、datetimeオブジェクトを作って計算してみました。

コードはこんな感じ。

import datetime

d1 = datetime.datetime(year=2018, month=1, day=7, hour=12, minute=34, second=56, microsecond=1)
d2 = datetime.datetime(year=2019, month=2, day=8, hour=13, minute=35, second=57, microsecond=2)

delta = d2-d1

print(d1)
print(d2)
print(type(delta))
print(delta)
print(delta.days)
print(delta.seconds)
print(delta.microseconds)

計算結果をいろいろなパターンで表示してみるわけです。 で、出力はこうなります。

2018-01-07 12:34:56.000001
2019-02-08 13:35:57.000002
<class 'datetime.timedelta'>
397 days, 1:01:01.000001
397
3661
1

timedelta.daysは日の部分だけ、timedelta.secondsは秒の部分だけ、timedelta.microsecondsはマイクロ秒の部分だけが取り出されるようですね。

広告

Pythonの日付/時刻処理カテゴリの投稿