Da secondi a orario

Dato il numero di secondi passati dalla mezzanotte, che ore sono adesso?

Versione 1

Utilizza gli operatori quoziente e resto della divisione intera

secondi = 86399          # 24*60*60-1, un secondo prima di mezzanotte
 
ss      = secondi %  60  # 86399 %  60 = 59   secondi
minuti  = secondi // 60  # 86399 // 60 = 1439 minuti  <-- DA ELABORARE
mm      = minuti  %  60  # 1439  %  60 = 59   minuti
hh      = minuti  // 60  # 1439  // 60 = 23   ore
 
print(secondi, "s ->", hh, "h", mm, "m", ss, "s")  # 86399 s -> 23 h 59 m 59 s

Versione 2

La variabile minuti è superflua

secondi = 86399
 
mm = secondi // 60
ss = secondi %  60
hh = mm      // 60
mm = mm      %  60
 
print(secondi, "s ->", hh, "h", mm, "m", ss, "s")  # 86399 s -> 23 h 59 m 59 s

Versione 3

Alcuni linguaggi non hanno né le funzioni né gli operatori per il quoziente e/o per il resto della divisione intera.
Utilizza la divisione e la sottrazione.

import math
 
secondi = 86399
 
mm = secondi / 60    # 1439,98333...
mm = math.floor(mm)  # 1439

ss = secondi-60*mm   # 86399-60*1439 = ... = 59

hh = mm / 60         # 23,98333...
hh = math.floor(hh)  # 23

mm = mm-60*hh        # 1439-60*23 = ... = 59
 
print(secondi, "s ->", hh, "h", mm, "m", ss, "s")


Versione 4

Se vuoi visualizzare l’orario nella forma hh:mm:ss, con due cifre per ogni posizione, allora si rende necessario

  • aggiungere eventuali zeri prima delle cifre singole
  • utilizzare il parametro sep di print()
secondi = 10000
  
mm = secondi // 60
ss = secondi %  60
hh = mm      // 60
mm = mm      %  60             # 2:46:40
   
if(hh < 10): hh = "0"+str(hh)  # hh <-- "0"+2 = "02" 
if(mm < 10): mm = "0"+str(mm)  # ---
if(ss < 10): ss = "0"+str(ss)  # ---
   
print(hh, mm, ss, sep=":")     # 02:46:40