【Python基礎】datetime.timedeltaによる日時の足し算・引き算、秒への変換

  • URLをコピーしました!
目次

datetime.timedelta

前回PyAutoGUIによるマウスやキーボードの操作の方法を紹介しました。

今回はdatetimeモジュールのtimedelta関数を使った日時の足し算・引き算と秒への変換を解説していきます。

datetimeモジュールを使って現在日時を取得する方法やフォーマットを変更する方法はこちらの記事で紹介しています。

そして現在日時は「datetime.datetime.now()」で取得できます。

import datetime

timenow = datetime.datetime.now()

print(timenow)

実行結果
2022-09-23 23:05:53.047258

まずはここからtimedelta関数を使って日時の足し算・引き算をしてみましょう。

それでは始めていきましょう。

日時の足し算・引き算

まず日時を足し算・引き算するためにはint型は使えません。

import datetime

timenow = datetime.datetime.now()

time_tomorrow = timenow + 1
time_yesterday = timenow - 1

print(timenow)
print(time_tomorrow)
print(time_yesterday)

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [2], in <cell line: 5>()
      1 import datetime
      3 timenow = datetime.datetime.now()
----> 5 time_tomorrow = timenow + 1
      6 time_yesterday = timenow - 1
      8 print(timenow)

TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'int'

まずは値をtimedelta型にする必要があります。

timedelta型の値を取得するには、「dateime.timedelta(値)」を用います。

import datetime

time_delta = datetime.timedelta(days = 1)

print(type(time_delta))

実行結果
<class 'datetime.timedelta'>

括弧の中の値に入力できるのは週(weeks)、日(days)、時間(hours)、分(minutes)、秒(seconds)、ミリ秒(milliseconds)、マイクロ秒(microseconds)です。

help(datetime.timedelta)

実行結果

class timedelta(builtins.object)
 |  Difference between two datetime values.
 |  
 |  timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
(以下略)

timedelta型の値ができたらあとは普通に足し算、引き算をすることができます。

import datetime

timenow = datetime.datetime.now()
time_delta = datetime.timedelta(days = 1)

time_tomorrow = timenow + time_delta
time_yesterday = timenow - time_delta

print(timenow)
print(time_tomorrow)
print(time_yesterday)

実行結果
2022-09-23 23:11:16.610441
2022-09-24 23:11:16.610441
2022-09-22 23:11:16.610441

秒への変換

timedelta型の値は秒に簡単に変換することができます。

その際には「.total_seconds()」を使います。

import datetime

time_delta_hour = datetime.timedelta(hours=1)

print(time_delta_hour)
print(time_delta_hour.total_seconds())

実行結果
1:00:00
3600.0

ちなみにdatetime型では「.total_seconds()」は使えないので注意してください。

import datetime

timenow = datetime.datetime.now()

print(timenow)
print(type(timenow))
print(timenow.total_seconds())

実行結果
2022-09-23 23:21:28.357401
<class 'datetime.datetime'>
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Input In [1], in <cell line: 7>()
      5 print(timenow)
      6 print(type(timenow))
----> 7 print(timenow.total_seconds())

AttributeError: 'datetime.datetime' object has no attribute 'total_seconds'

日時の足し算、引き算と秒への変換ができるようになると、組み合わせてこのようにプログラムの処理時間を秒で表示するということも可能になります。

import datetime
import time

time_start = datetime.datetime.now()
time.sleep(90)
time_end = datetime.datetime.now()

time_delta = time_end - time_start

print(time_delta)
print(time_delta.total_seconds())

実行結果
0:01:30.002940
90.00294

処理時間を測るのになかなか便利です。

次回はPythonのglobal変数に関して解説していきます。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次