Search code examples
pythondatetimedate-format

Python time format with three-digit hour


How can I parse the time 004:32:55 into a datetime object? This:

datetime.strptime("004:32:55", "%H:%M:%S")

doesn't work becaush %H expects two digits. Any way to add the third digit?


Solution

  • I chose a more pragmatic approach in the end and converted the time stamp to seconds:

    hours = (0 if time_string.split(":")[0] == "000" else int(time_string.split(":")[0].lstrip("0")) * 3600)
    mins = (0 if time_string.split(":")[1] == "00" else int(time_string.split(":")[1].lstrip("0")) * 60)
    secs = (0 if time_string.split(":")[2] == "00" else int(time_string.split(":")[2].lstrip("0")))
    
    return hours + mins + secs
    

    Converting back to hours, minutes, and seconds is easy with datetime.timedelta(seconds=123).

    EDIT:

    A better solution (thanks to Ben):

    hours = int(time_string.split(":")[0]) * 3600
    mins  = int(time_string.split(":")[1]) * 60
    secs  = int(time_string.split(":")[2])
    
    return hours + mins + secs