diff --git a/voussoirkit/hms.py b/voussoirkit/hms.py new file mode 100644 index 0000000..47a2f7f --- /dev/null +++ b/voussoirkit/hms.py @@ -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