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.
Le variabili tutto maiuscolo contengono dati da elaborare.
Le variabili tutto maiuscolo contengono dati definitivi.

SECONDI = 86399            # 24*60*60-1, un secondo prima di mezzanotte
    
MINUTI  = SECONDI // 60    # <-- 86399 // 60 = 1439
secondi = SECONDI %  60    # <-- 86399 %  60 = 59

ore     = MINUTI  // 60    # <-- 1439  // 60 = 23
minuti  = MINUTI  %  60    # <-- 1439  %  60 = 59

     
print(ore, minuti, secondi)  # 23 59 59

Versione 2.1

Se il numero di secondi può esssere grande a piacere allora bisogna passare ai giorni e agli anni

secondi = 31626061
 
MINUTI  = SECONDI //  60
secondi = SECONDI %   60
ORE     = MINUTI  //  60
minuti  = MINUTI  %   60
GIORNI  = ORE     //  24
ore     = ORE     %   24
anni    = GIORNI  // 365
giorni  = GIORNI  %  365
 
print("Anni    =", anni)
print("Giorni  =", giorni)
print("Ore     =", ore)
print("Minuti  =", minuti)
print("Secondi =", secondi)

Versione 2.2

Lo stesso codice ma su due colonne

secondi = 31626061
 
MINUTI  = SECONDI //  60; secondi = SECONDI %   60
ORE     = MINUTI  //  60; minuti  = MINUTI  %   60
GIORNI  = ORE     //  24; ore     = ORE     %   24
ANNI    = GIORNI  // 365; giorni  = GIORNI  %  365
 
print("Anni    =", ANNI)
print("Giorni  =", giorni)
print("Ore     =", ore)
print("Minuti  =", minuti)
print("Secondi =", secondi)

Versione 2

Troppe variabili… ne bastano la metà!

secondi = 31626061
 
minuti  = secondi //  60
secondi = secondi %   60
ore     = minuti  //  60
minuti  = minuti  %   60
giorni  = ore     //  24
ore     = ore     %   24
anni    = giorni  // 365
giorni  = giorni  %  365 
   
print(anni, giorni, ore, minuti, secondi)

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.

from math import floor  # arrotondamento all'intero che precede
  
secondi = 86399
  
minuti  = secondi / 60       # 1439,9833...
minuti  = floor(minuti)      # 1439
secondi = secondi-60*minuti  # 86399-60*1439 = ... = 59

ore     = minuti / 60        # 23,98333...
ore     = floor(ore)         # 23
minuti  = minuti-60*ore      # 1439-60*23 = ... = 59
  
print(ore, minuti, secondi)  # 23 59 59

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
   
minuti  = secondi // 60  # 166
secondi = secondi %  60  # 40
ore     = minuti  // 60  # 2
minuti  = minuti  %  60  # 46
     
if(ore     < 10): ore     = "0"+str(ore)      # "0"+"2" = "02" 
if(minuti  < 10): minuti  = "0"+str(minuti)   # 
if(secondi < 10): secondi = "0"+str(secondi)  # 
     
print(ore, minuti, secondi, sep=":")          # 02:46:40