In questo tutorial, parleremo di tempo. Non preoccuparti, questo non è un noioso tutorial di storia, ma esamineremo diversi modi per convertire il tempo in secondi in tempo in ore, minuti e secondi.
Da qui in avanti ci riferiremo al tempo in ore, minuti e secondi come tempo nel formato preferito
Sembra così:
2:46:40
Prendiamo un po’ di “tempo” e pensiamo al problema. Senza dubbio Python ha moduli incredibili per fare la conversione al posto nostro. Ma proviamo a scrivere il nostro programma prima di passare ai moduli integrati.
Creazione di una funzione personalizzata per convertire il tempo in ore, minuti e secondi
Per scrivere la nostra stessa funzione di conversione, dobbiamo prima pensare al problema matematicamente.
Come si convertono i secondi nel formato preferito?
È necessario ottenere il valore di ore, minuti e secondi
Assumeremo che il tempo in secondi non superi il numero totale di secondi in un giorno. Se lo fa, lo divideremo per il numero totale di secondi in un giorno e ne prenderemo il resto.
Questo è rappresentato matematicamente come:
seconds = seconds % (24 * 3600)
L’operatore % restituisce il resto.
24*3600 poiché un’ora ha 3600 secondi (60*60) e un giorno ha 24 ore.
Dopo questo possiamo procedere e calcolare il valore dell’ora dai secondi.
1. Ottieni il valore dell’ora
Per ottenere il valore dell’ora dai secondi, useremo l’operatore divisione intera (//).
Restituisce la parte integrale del quoziente.
Poiché abbiamo bisogno del numero di ore, divideremo il numero totale di secondi (n) per il numero totale di secondi in un’ora (3600).
Matematicamente questo è rappresentato come :
hour = seconds // 3600
Dopo questo dobbiamo calcolare i minuti.
2. Ottieni il valore dei minuti
Per calcolare il valore dei minuti dobbiamo prima dividere il numero totale di secondi per 3600 e prendere il resto.
Matematicamente questo è rappresentato come :
seconds = seconds % 3600
Ora, per calcolare il valore dei minuti dal risultato sopra, utilizzeremo nuovamente l’operatore di divisione intera.
minutes = seconds // 60
A minute has sixty seconds hence we floor the seconds value with 60.
Dopo aver calcolato il valore dei minuti possiamo procedere a calcolare il valore dei secondi per il nostro formato preferito.
3. Ottenere il valore dei secondi
Per ottenere il valore dei secondi abbiamo bisogno di dividere nuovamente il numero totale di secondi per il numero di secondi in un minuto (60) e prendere il resto.
Matematicamente ciò si fa come segue:
seconds = seconds % 60
Questo darà il valore dei secondi che ci serve per il nostro formato preferito.
4. Codice completo
Compiliamo la conoscenza sopra in una funzione Python.
def convert_to_preferred_format(sec):
sec = sec % (24 * 3600)
hour = sec // 3600
sec %= 3600
min = sec // 60
sec %= 60
print("seconds value in hours:",hour)
print("seconds value in minutes:",min)
return "%02d:%02d:%02d" % (hour, min, sec)
n = 10000
print("Time in preferred format :-",convert(n))
Output:
seconds value in hours: 2
seconds value in minutes: 46
Time in preferred format :- 02:46:40
Utilizzando il modulo Time
Ora vediamo un modulo incorporato che ci permette di convertire i secondi nel nostro formato preferito in una sola riga di codice.
Il modulo time definisce l’epoca come 1 gennaio 1970, 00:00:00 (UTC) nei sistemi Unix (dipendente dal sistema). L’epoca è fondamentalmente l’inizio del tempo per un computer. Pensalo come il giorno 0. Ogni volta che convertiamo secondi usando il modulo time, questa epoca viene utilizzata come punto di riferimento.
Per visualizzare l’epoca nel tuo sistema, usa la seguente riga di codice:
time.gmtime(0)
Per convertire i secondi nel formato preferito, utilizzare la seguente riga di codice:
time.strftime("%H:%M:%S", time.gmtime(n))
Questa riga prende il tempo in secondi come ‘n’ e quindi consente di visualizzare separatamente l’ora, i minuti e i secondi.
Il codice Python completo è il seguente:
import time
n=10000
time_format = time.strftime("%H:%M:%S", time.gmtime(n))
print("Time in preferred format :-",time_format)
Output:
Time in preferred format :- 02:46:40
Il modulo time ti offre anche l’opzione di visualizzare alcune informazioni aggiuntive come giorno, mese e anno.
%a |
display abbreviated weekday name. |
%A |
display full weekday name. |
%b |
display abbreviated month name. |
%B |
display full month name. |
%c |
display the appropriate date and time representation. |
%d |
display day of the month as a decimal number [01,31]. |
Proviamo ad utilizzare %a e %b.
import time
n=100000000000
time_format = time.strftime("Day: %a, Time: %H:%M:%S, Month: %b", time.gmtime(n))
print("Time in preferred format :-",time_format)
Output:
Time in preferred format :- Day: Wed, Time: 09:46:40, Month: Nov
Utilizzando il modulo Datetime
Puoi anche utilizzare il metodo timedelta sotto il modulo DateTime per convertire i secondi nel formato preferito.
Visualizza il tempo come giorni, ore, minuti e secondi trascorsi dall’epoca.
Il codice Python per convertire i secondi nel formato preferito utilizzando il modulo Datetime è il seguente:
import datetime
n= 10000000
time_format = str(datetime.timedelta(seconds = n))
print("Time in preferred format :-",time_format)
Output :
Time in preferred format :- 115 days, 17:46:40
Conclusione
Questo tutorial ha esaminato tre diversi modi per convertire i secondi in ore, minuti e secondi. Fondamentalmente ci sono due modi diversi per affrontare il problema.
O puoi scrivere la tua funzione o utilizzare un modulo integrato. Abbiamo iniziato scrivendo la nostra funzione e poi abbiamo esaminato il modulo time e DateTime.
Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds