pythondatetime

Convert time string expressed as <number>[m|h|d|s|w] to seconds


How can I convert a string representing time in the format of <number>[m|h|d|s|w] (m= minutes, h=hours, d=days, s=seconds w=week) to number of seconds? E.g.:

def convert_to_seconds(timeduration):
    ...

convert_to_seconds("1h")
-> 3600

convert_to_seconds("1d")
-> 86400

Solution

  • Yes, there is a good simple method that you can use in most languages without having to read the manual for a datetime library. This method can also be extrapolated to ounces/pounds/tons etc etc:

    seconds_per_unit = {"s": 1, "m": 60, "h": 3600, "d": 86400, "w": 604800}
    
    def convert_to_seconds(s):
        return int(s[:-1]) * seconds_per_unit[s[-1]]