こんにちは。
本日はPythonメモです。
- 概要
- UNIX時間(エポック秒)の取得(time.time)
- 一時停止(time.sleep)
- datetimeの取得(datetime.datetime)
- 日時に関する差を取得する(datetime.timedelta)
概要
timeモジュール、datetimeモジュールを使用した
時間に関するいろいろメモです。
モジュールのimportは以下です。
import time import datetime
UNIX時間(エポック秒)の取得(time.time)
UNIX時間(エポック秒)とは
UTCの1970年1月1日0時0分0秒から経過した秒数です。
import time print(time.time())
実行結果は以下です。
1696146072.446885
時間の経過を計算するのに便利です。
以下のサンプルは、Enterを押された間隔の秒数を取得します。
import time print('Enterを押して開始してください。') input() start = time.time() print('Enterを押して停止してください。') input() end = time.time() interval = end - start print(f'経過時間は... {round(interval, 3)} 秒です。')
実行結果は以下です。
Enterを押して開始してください。 Enterを押して停止してください。 経過時間は... 2.656 秒です。
一時停止(time.sleep)
time.sleep()は引数に与えた秒数処理を一時停止します。
import time for i in range(3): t1 = time.time() time.sleep(i + 1) t2 = time.time() print(f'{round(t2 -t1)} 秒')
実行結果は以下です。
1 秒 2 秒 3 秒
datetimeの取得(datetime.datetime)
timeは秒数の計算などでは便利でしたが
パッと見て何年何月〜ってのがわかるものではありませんでした。
表示したり日付計算を行う場合は、datetimeが便利です。
import datetime dt = datetime.datetime.now() print(dt) print(f'{dt.year}/{dt.month}/{dt.day} {dt.hour}:{dt.minute}:{dt.second} {dt.microsecond}')
datetime.datetime.now()
で現在日時のdatetimeオブジェクトを取得します。
datetimeオブジェクトは年、月、日...とそれぞれを個別に取得することもできます。
実行結果は以下です。
2023-10-01 16:52:05.714860 2023/10/1 16:52:5 714860
指定した日時情報からdatetimeオブジェクトを取得する場合は
datetime.datetime
の引数に情報を与えます。
import datetime dt = datetime.datetime(2000, 1, 1, 12, 30, 59, 123456) print(dt)
実行結果は以下です。
2000-01-01 12:30:59.123456
先程使ったtime.time
からdatetimeオブジェクトを取得することも可能です。
その場合は、datetime.datetime.fromtimestamp
を使用します。
import time import datetime dt = datetime.datetime.fromtimestamp(time.time())
表示する場合は、以下のように書式を設定することも可能です。
import datetime dt = datetime.datetime.now() print(dt.strftime('%Y/%m/%d %H:%M:%S'))
実行結果は以下です。
2023/10/01 17:01:11
文字列からdatetimeオブジェクトを取得する場合は
datetime.datetime.strptime
を使用します。
import datetime dt = datetime.datetime.strptime('2023/10/1 12:40:50', '%Y/%m/%d %H:%M:%S')
このとき、書式に一致しない日時を指定するとValueErrorが発生するので注意です。
日時に関する差を取得する(datetime.timedelta)
datetime.timedeltaを使用するとtimedeltaオブジェクトが取得できます。
以下は、1日、1時間、30分といったtimedeltaオブジェクトを作成して
その差をdtに足しています。
import datetime td = datetime.timedelta(days=1, hours=1, minutes=30) print(str(td)) dt = datetime.datetime(2023, 10, 1, 12, 30, 00) dt2 = dt + td print(f'{dt2}')
実行結果は以下です。
1 day, 1:30:00 2023-10-02 14:00:00
以上です。