How could I implement “HH:MM:SS” format

Question:

I am asked to do this:

Write a program that adds one second to a clock time, given its hours, minutes and seconds.

Input consists of three natural numbers h, m and s that represent a clock time, that is, such that h<24, m<60 and s<60.

This is the code I came up with:

from easyinput import read
    h = read(int)
    m = read(int)
    s = read(int)
    
    seconds = (s+1)%60
    minutes = (m + (s+1)//60)%60
    hours = h + (m + (s+1)//60))//60

    print(hours, minutes, seconds)

It does its function well, if I have

13 59 59

it returns

14 0 0

I am sure it could be bettered, but that’s not the problem right now.

The problem is that I need the format to be like this:

11:33:16

It should be “HH:MM:SS”, and I don’t know how to do it.
Anyone could help me?? Thanksss :)))

Asked By: lala

||

Answers:

Use an f-string with format modifiers. 02d says "an int with field width 2 padded with 0."

print(f"{hours:02d}:{minutes:02d}:{seconds:02d}")
>>> hours = 13
>>> minutes = 3
>>> seconds = 5
>>> print(f"{hours:02d}:{minutes:02d}:{seconds:02d}")
13:03:05
>>> 

Note that the d in the format specifiers is unnecessary. You could write:

print(f"{hours:02}:{minutes:02}:{seconds:02}")

Documentation on f-strings.

Answered By: Chris
print(f'{hours:>02}:{minutes:>02}:{seconds:>02}')

Usually, you don’t want to deal with calculating date and time yourself, so a better approach is to use the native library that works with date and time out of the box:

from datetime import datetime, timedelta
from easyinput import read

h, m, s = read(int), read(int), read(int)

time = datetime.now().replace(hour=h, minute=m, second=s)
time += timedelta(seconds=1)

print(time.strftime("%H:%M:%S"))
Answered By: VisioN
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.