なんだかGoodVibes

日々の勉強メモです。

【Python】時間いろいろ(timeモジュール、datetimeモジュール)

こんにちは。
本日はPythonメモです。

概要

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



以上です。