How to convert seconds into weeks, days, hours, minutes, and seconds in Python

1 Answer

0 votes
"""
Use integer division and modulo:

1 minute = 60 seconds
1 hour   = 60 minutes
1 day    = 24 hours
1 week   = 7 days
"""

"""
    Convert a total number of seconds into weeks, days, hours,
    minutes, and seconds. The function receives the total seconds
    and returns each component in a dictionary.
"""
def convert_seconds(total_seconds: int) -> dict:
    SECS_PER_MIN  = 60
    SECS_PER_HOUR = 60 * SECS_PER_MIN
    SECS_PER_DAY  = 24 * SECS_PER_HOUR
    SECS_PER_WEEK = 7  * SECS_PER_DAY

    # Compute each unit using integer division and modulo
    weeks = total_seconds // SECS_PER_WEEK
    total_seconds %= SECS_PER_WEEK

    days = total_seconds // SECS_PER_DAY
    total_seconds %= SECS_PER_DAY

    hours = total_seconds // SECS_PER_HOUR
    total_seconds %= SECS_PER_HOUR

    minutes = total_seconds // SECS_PER_MIN
    seconds = total_seconds % SECS_PER_MIN

    return {
        "weeks": weeks,
        "days": days,
        "hours": hours,
        "minutes": minutes,
        "seconds": seconds
    }


if __name__ == "__main__":
    seconds = 1_000_000

    result = convert_seconds(seconds)

    print(f"{result['weeks']} weeks, "
          f"{result['days']} days, "
          f"{result['hours']} hours, "
          f"{result['minutes']} minutes, "
          f"{result['seconds']} seconds")


"""
run:

1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds

"""

 



answered 11 hours ago by avibootz

Related questions

1 answer 138 views
...