Add hms.py.
This commit is contained in:
parent
f811f74fe5
commit
efbc1c44bb
1 changed files with 36 additions and 0 deletions
36
voussoirkit/hms.py
Normal file
36
voussoirkit/hms.py
Normal file
|
@ -0,0 +1,36 @@
|
|||
import math
|
||||
|
||||
def hms_to_seconds(hms):
|
||||
'''
|
||||
Convert hh:mm:ss string to an integer seconds.
|
||||
'''
|
||||
parts = hms.split(':')
|
||||
seconds = 0
|
||||
if len(parts) > 3:
|
||||
raise ValueError(f'{hms} doesn\'t match the HH:MM:SS format.')
|
||||
if len(parts) == 3:
|
||||
seconds += int(parts[0]) * 3600
|
||||
parts.pop(0)
|
||||
if len(parts) == 2:
|
||||
seconds += int(parts[0]) * 60
|
||||
parts.pop(0)
|
||||
if len(parts) == 1:
|
||||
seconds += float(parts[0])
|
||||
return seconds
|
||||
|
||||
def seconds_to_hms(seconds):
|
||||
'''
|
||||
Convert integer number of seconds to an hh:mm:ss string.
|
||||
Only the necessary fields are used.
|
||||
'''
|
||||
seconds = math.ceil(seconds)
|
||||
(minutes, seconds) = divmod(seconds, 60)
|
||||
(hours, minutes) = divmod(minutes, 60)
|
||||
parts = []
|
||||
if hours:
|
||||
parts.append(hours)
|
||||
if hours or minutes:
|
||||
parts.append(minutes)
|
||||
parts.append(seconds)
|
||||
hms = ':'.join(f'{part:02d}' for part in parts)
|
||||
return hms
|
Loading…
Reference in a new issue