LoginSignup
0
1

More than 3 years have passed since last update.

pythonで24時間を超えて時間計算を行う

Last updated at Posted at 2021-02-19

はじめに

野暮用で「100 時間 + 35 時間 20 分 = 135 時間 20 分」のような計算をする必要がありました。
時間計算を行うといえば datetime などが利用できますが、24 時間を超えると 1 日として換算されてしまいます。
私には上記のような計算が簡単にできるライブラリを見つけることができませんでしたので、自作した次第です。

コードはこちら (github)です。

機能一覧

時間表記文字列を時間と分に分割 split_time_str(time)

文字列 time から時間、分を取得して int で返します。

import time_calc as tc

hour, minute = tc.split_time_str('123:45')
print(hour)   # 123
print(minute) # 45

時間表示文字列を分に変換 get_minute_time_str(time)

文字列 time が表す時間を分に直して int で取得します。

import time_calc as tc

minute = tc.get_minute_time_str('1:15')
print(minute) # 75

時間、分から時間表記文字列を生成 generate_time_str(hour, minute)

hour, minute から時間を表す文字列を生成します。
hour, minute はどちらも int です。

import time_calc as tc

time_str = tc.generate_time_str(123, 5)
print(time_str) # '123:05'

分から時間表記文字列を生成 conv_minute_to_time(minute)

minute を時間を表す文字列に変換します。
minute は int です。

import time_calc as tc

time_str = tc.conv_minute_to_time(75)
print(time_str) # '1:15'

時間の足し算 add_time(time1, time2)

文字列 time1 と time2 を足した時間を返します。

import time_calc as tc

time_str = tc.add_time('1:30', '2:40')
print(time_str) # '4:10'

時間の引き算 sub_time(time1, time2)

文字列 time1 から time2 を引いた値を返します。
time2 の方が大きい場合は差分が負の値で返ります。

import time_calc as tc

time_str = tc.sub_time('2:10', '1:20')
print(time_str) # '0:50'

時間の割り算 div_time(time, divide)

文字列 time を divide 分割した時間を返します。
x 日で合計 y 時間にするには、1 日あたり何時間なのか?を求めるために実装しました。

import time_calc as tc

time_str = tc.div_time('1:30', 3)
print(time_str) # '0:30'

時間の比較 comp_time_str(time1, time2)

文字列 time1 と time2 を比較した結果を int で返します。
time1 が大きければ正の値、time2 が大きければ負の値、同じならば 0 が返ります。

import time_calc as tc

time1 = '1:00'
time2 = '0:59'
comp = tc.comp_time_str(time1, time2)
if comp > 0:
    print(time1 + ' > ' + time2)
elif comp < 0:
    print(time1 + ' < ' + time2)
else:
    print(time1 + ' = ' + time2)
# 1:00 > 0:59
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1