Python の datetime モジュールで、timedelta の期間に含まれる『秒数の合計』を取得するコード例です。
トータルセカンズ timedelta.total_seconds() を使うとできました。
timedelta の『日数 days』、『秒 seconds』、『マイクロ秒 microseconds』から、自分で計算する手間が省けて、とても便利でした。
また、取得した秒数の合計には、マイクロ秒の部分も含まれていました。
マイクロ秒は、小数点以下の秒数として、取得できました。
使用したライブラリ
Python 公式マニュアルの場所です。
datetime(デートタイム) モジュール
組み込み機能
- f-string
f''
の説明(引用符の前に『エフ f 』を付けた文字列、フォーマット済み文字列リテラル) - 文字列操作の良いアプローチや書式指定方法の説明
コード例
timedelta の期間に含まれる『秒数の合計』を取得する Python コード例です。
timedelta(days=1) の秒数を取得
1 日は 24 時間で、1 時間は 60 分で、1 分は 60 秒です。
なので、1 日の秒数は、24 * 60 * 60 = 86400 秒となるはず。
import datetime
t = datetime.timedelta(days=1)
print('datetime.timedelta(days=1)')
print(f'{t}')
print(f'days: {t.days}')
print(f'seconds: {t.seconds}')
print(f'microseconds: {t.microseconds}\n')
t_seconds = t.total_seconds()
print(f'total_seconds: {t_seconds}\n')
実行結果(days=1 の秒数)
意図した通り、86400 秒が取得できていました。
datetime.timedelta(days=1)
1 day, 0:00:00
days: 1
seconds: 0
microseconds: 0
total_seconds: 86400.0
timedelta(days=1, seconds=1) の秒数を取得
1日と1秒を指定した時の秒数です。
import datetime
t = datetime.timedelta(days=1, seconds=1)
print('datetime.timedelta(days=1, seconds=1)')
print(f'{t}')
print(f'days: {t.days}')
print(f'seconds: {t.seconds}')
print(f'microseconds: {t.microseconds}\n')
t_seconds = t.total_seconds()
print(f'total_seconds: {t_seconds}\n')
実行結果(days=1, seconds=1 の秒数)
datetime.timedelta(days=1, seconds=1)
1 day, 0:00:01
days: 1
seconds: 1
microseconds: 0
total_seconds: 86401.0
timedelta(days=-1) の秒数を取得
マイナスの1日を指定した時の秒数です。
import datetime
t = datetime.timedelta(days=-1)
print('datetime.timedelta(days=-1)')
print(f'{t}')
print(f'days: {t.days}')
print(f'seconds: {t.seconds}')
print(f'microseconds: {t.microseconds}\n')
t_seconds = t.total_seconds()
print(f'total_seconds: {t_seconds}\n')
実行結果(days=-1 の秒数)
datetime.timedelta(days=-1)
-1 day, 0:00:00
days: -1
seconds: 0
microseconds: 0
total_seconds: -86400.0
timedelta(days=-1, seconds=-1) の秒数を取得
マイナスの1日とマイナスの1秒を指定した時の秒数です。
import datetime
t = datetime.timedelta(days=-1, seconds=-1)
print('datetime.timedelta(days=-1, seconds=-1)')
print(f'{t}')
print(f'days: {t.days}')
print(f'seconds: {t.seconds}')
print(f'microseconds: {t.microseconds}\n')
t_seconds = t.total_seconds()
print(f'total_seconds: {t_seconds}\n')
実行結果(days=-1, seconds=-1 の秒数)
datetime.timedelta(days=-1, seconds=-1)
-2 days, 23:59:59
days: -2
seconds: 86399
microseconds: 0
total_seconds: -86401.0
timedelta(microseconds=1) の秒数を取得
1マイクロ秒を指定した時の秒数です。
import datetime
t = datetime.timedelta(microseconds=1)
print('datetime.timedelta(microseconds=1)')
print(f'{t}')
print(f'days: {t.days}')
print(f'seconds: {t.seconds}')
print(f'microseconds: {t.microseconds}\n')
t_seconds = t.total_seconds()
print(f'total_seconds: {t_seconds}')
print(f'total_seconds: {t_seconds:.7f} (.7f)\n')
実行結果(microseconds=1 の秒数)
1マイクロ秒が、小数点以下の秒数として取得できました。
datetime.timedelta(microseconds=1)
0:00:00.000001
days: 0
seconds: 0
microseconds: 1
total_seconds: 1e-06
total_seconds: 0.0000010 (.7f)
timedelta(microseconds=-1) の秒数を取得
マイナスの1マイクロ秒を指定した時の秒数です。
import datetime
t = datetime.timedelta(microseconds=-1)
print('datetime.timedelta(microseconds=-1)')
print(f'{t}')
print(f'days: {t.days}')
print(f'seconds: {t.seconds}')
print(f'microseconds: {t.microseconds}\n')
t_seconds = t.total_seconds()
print(f'total_seconds: {t_seconds}')
print(f'total_seconds: {t_seconds:.7f} (.7f)\n')
実行結果(microseconds=-1 の秒数)
マイナスの1マイクロ秒が、小数点以下の秒数として取得できました。
datetime.timedelta(microseconds=-1)
-1 day, 23:59:59.999999
days: -1
seconds: 86399
microseconds: 999999
total_seconds: -1e-06
total_seconds: -0.0000010 (.7f)