目次
datetime.timedelta
前回PyAutoGUIによるマウスやキーボードの操作の方法を紹介しました。
【Python基礎】PyAutoGUIでマウスやキーボードの操作を自動化
PyAutoGUI 前回、Jupyter Notebookの実行結果をクリアする方法を解説しました。 今回はマウスやキーボードの操作をPythonから行い、自動化してしまおうというお話しです…
今回はdatetimeモジュールのtimedelta関数を使った日時の足し算・引き算と秒への変換を解説していきます。
datetimeモジュールを使って現在日時を取得する方法やフォーマットを変更する方法はこちらの記事で紹介しています。
【Python基礎】datetime :日時取得とフォーマットの変更
datetimeで日時を取得 ファイル名を付けるとき、日時のファイル名にしたいことあると思います。 そんなとき役に立つのがdatetimeモジュールです。 この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変数に関して解説していきます。
【Python基礎】グローバル(global)変数:どこからでもアクセス可能な変数
global変数 前回、datetime.timedeltaによる日時の足し算・引き算、秒への変換に関して解説しました。 今回はPythonのグローバル(global)変数に関して解説をしていき…
ではでは今回はこんな感じで。
コメント