Python 3 - Data e ora
Un programma Python può gestire la data e l'ora in diversi modi. La conversione tra i formati di data è un compito comune per i computer. I moduli ora e calendario di Python aiutano a tenere traccia di date e ore.
Cos'è Tick?
Gli intervalli di tempo sono numeri in virgola mobile in unità di secondi. Particolari istanti di tempo sono espressi in secondi dalle ore 00:00 del 1 gennaio 1970 (epoca).
C'è un popolare timemodulo disponibile in Python che fornisce funzioni per lavorare con i tempi e per convertire tra rappresentazioni. La funzionetime.time() restituisce l'ora di sistema corrente in tick a partire dalle 00:00 del 1 gennaio 1970 (epoca).
Esempio
#!/usr/bin/python3
import time; # This is required to include time module.
ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
Ciò produrrebbe un risultato come segue:
Number of ticks since 12:00am, January 1, 1970: 1455508609.34375
L'aritmetica della data è facile da fare con i tick. Tuttavia, le date precedenti all'epoca non possono essere rappresentate in questa forma. Anche le date nel lontano futuro non possono essere rappresentate in questo modo: il punto di interruzione è nel 2038 per UNIX e Windows.
Cos'è TimeTuple?
Molte delle funzioni temporali di Python gestiscono il tempo come una tupla di 9 numeri, come mostrato di seguito:
Indice | Campo | Valori |
---|---|---|
0 | Anno a 4 cifre | 2016 |
1 | Mese | Da 1 a 12 |
2 | Giorno | Da 1 a 31 |
3 | Ora | Da 0 a 23 |
4 | Minuto | Da 0 a 59 |
5 | Secondo | Da 0 a 61 (60 o 61 sono secondi intercalari) |
6 | Giorno della settimana | Da 0 a 6 (0 è lunedì) |
7 | Giorno dell'anno | Da 1 a 366 (giorno giuliano) |
8 | Risparmio di luce diurna | -1, 0, 1, -1 significa che la libreria determina l'ora legale |
Ad esempio -
import time
print (time.localtime());
Ciò produrrebbe un risultato come segue:
time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9,
tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
La tupla sopra è equivalente a struct_timestruttura. Questa struttura ha i seguenti attributi:
Indice | Attributi | Valori |
---|---|---|
0 | tm_year | 2016 |
1 | tm_mon | Da 1 a 12 |
2 | tm_mday | Da 1 a 31 |
3 | tm_hour | Da 0 a 23 |
4 | tm_min | Da 0 a 59 |
5 | tm_sec | Da 0 a 61 (60 o 61 sono secondi intercalari) |
6 | tm_wday | Da 0 a 6 (0 è lunedì) |
7 | tm_yday | Da 1 a 366 (giorno giuliano) |
8 | tm_isdst | -1, 0, 1, -1 significa che la libreria determina l'ora legale |
Ottenere l'ora corrente
Per tradurre un istante di tempo dai secondi trascorsi dal valore a virgola mobile di epoch in un valore a virgola mobile, passare il valore a virgola mobile a una funzione (ad esempio, localtime) che restituisce una tupla di tempo con tutti i nove elementi validi.
#!/usr/bin/python3
import time
localtime = time.localtime(time.time())
print ("Local current time :", localtime)
Ciò produrrebbe il seguente risultato, che potrebbe essere formattato in qualsiasi altra forma presentabile:
Local current time : time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15,
tm_hour = 9, tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
Ottenere l'ora formattata
Puoi formattare in qualsiasi momento secondo le tue esigenze, ma è un metodo semplice per ottenere il tempo in un formato leggibile asctime() -
#!/usr/bin/python3
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)
Ciò produrrebbe il seguente risultato:
Local current time : Mon Feb 15 09:34:03 2016
Ottenere il calendario per un mese
Il modulo calendario offre un'ampia gamma di metodi per giocare con calendari annuali e mensili. Qui stampiamo un calendario per un determinato mese (gennaio 2008) -
#!/usr/bin/python3
import calendar
cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)
Ciò produrrebbe il seguente risultato:
Here is the calendar:
February 2016
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29
Il modulo tempo
C'è un popolare timemodulo disponibile in Python, che fornisce funzioni per lavorare con i tempi e per convertire tra rappresentazioni. Ecco l'elenco di tutti i metodi disponibili.
Sr.No. | Descrizione della funzione |
---|---|
1 | time.altzone L'offset del fuso orario dell'ora legale locale, in secondi a ovest di UTC, se definito. Ciò è negativo se il fuso orario dell'ora legale locale è a est di UTC (come nell'Europa occidentale, incluso il Regno Unito). Usalo se la luce del giorno è diversa da zero. |
2 | time.asctime ([tupletime]) Accetta una tupla ora e restituisce una stringa di 24 caratteri leggibile come "Tue Dec 11 18:07:14 2008". |
3 | time.clock () Restituisce il tempo della CPU corrente come numero di secondi a virgola mobile. Per misurare i costi computazionali di approcci diversi, il valore di time.clock è più utile di quello di time.time (). |
4 | time.ctime ([secs]) Come asctime (localtime (secs)) e senza argomenti è come asctime () |
5 | time.gmtime ([secs]) Accetta un istante espresso in secondi dall'epoca e restituisce una tupla temporale t con l'ora UTC. Nota: t.tm_isdst è sempre 0 |
6 | time.localtime ([secs]) Accetta un istante espresso in secondi dall'epoca e restituisce una tupla temporale t con l'ora locale (t.tm_isdst è 0 o 1, a seconda che l'ora legale si applichi agli istanti secondi dalle regole locali). |
7 | time.mktime (tupletime) Accetta un istante espresso come tupla temporale nell'ora locale e restituisce un valore in virgola mobile con l'istante espresso in secondi dall'epoca. |
8 | time.sleep (sec) Sospende il thread chiamante per secondi secondi. |
9 | time.strftime (fmt [, tupletime]) Accetta un istante espresso come tupla temporale nell'ora locale e restituisce una stringa che rappresenta l'istante come specificato dalla stringa fmt. |
10 | time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y') Analizza str in base alla stringa di formato fmt e restituisce l'istante in formato tupla ora. |
11 | time.time () Restituisce l'istante di tempo corrente, un numero in virgola mobile di secondi trascorsi dall'epoca. |
12 | time.tzset () Reimposta le regole di conversione dell'ora utilizzate dalle routine della libreria. La variabile d'ambiente TZ specifica come questo viene fatto. |
Ci sono due importanti attributi disponibili con il modulo ora. Sono -
Sr.No. | Attributo e descrizione |
---|---|
1 | time.timezone L'attributo time.timezone è lo scostamento in secondi del fuso orario locale (senza ora legale) dall'UTC (> 0 nelle Americhe; <= 0 nella maggior parte dell'Europa, Asia, Africa). |
2 | time.tzname L'attributo time.tzname è una coppia di stringhe dipendenti dalla locale, che sono i nomi del fuso orario locale senza e con l'ora legale, rispettivamente. |
Il modulo calendario
Il modulo calendario fornisce funzioni relative al calendario, comprese le funzioni per stampare un calendario di testo per un determinato mese o anno.
Per impostazione predefinita, il calendario utilizza il lunedì come primo giorno della settimana e la domenica come ultimo. Per cambiare questo, chiama ilcalendar.setfirstweekday() funzione.
Di seguito è riportato un elenco delle funzioni disponibili con calendar modulo -
Sr.No. | Descrizione della funzione |
---|---|
1 | calendar.calendar(year,w = 2,l = 1,c = 6) Restituisce una stringa su più righe con un calendario per anno anno formattato in tre colonne separate da spazi c. w è la larghezza in caratteri di ciascuna data; ogni riga ha lunghezza 21 * w + 18 + 2 * c. l è il numero di righe per ogni settimana. |
2 | calendar.firstweekday( ) Restituisce l'impostazione corrente per il giorno della settimana che inizia ogni settimana. Per impostazione predefinita, quando il calendario viene importato per la prima volta, questo è 0, che significa lunedì. |
3 | calendar.isleap(year) Restituisce True se year è un anno bisestile; in caso contrario, False. |
4 | calendar.leapdays(y1,y2) Restituisce il numero totale di giorni bisestili negli anni compresi nell'intervallo (y1, y2). |
5 | calendar.month(year,month,w = 2,l = 1) Restituisce una stringa su più righe con un calendario per mese mese dell'anno anno, una riga alla settimana più due righe di intestazione. w è la larghezza in caratteri di ciascuna data; ogni riga ha lunghezza 7 * w + 6. l è il numero di righe per ogni settimana. |
6 | calendar.monthcalendar(year,month) Restituisce un elenco di elenchi di int. Ogni sottolista indica una settimana. I giorni al di fuori del mese mese dell'anno anno sono impostati su 0; i giorni del mese vengono impostati sul giorno del mese, 1 e oltre. |
7 | calendar.monthrange(year,month) Restituisce due numeri interi. Il primo è il codice del giorno della settimana per il primo giorno del mese mese dell'anno anno; il secondo è il numero di giorni del mese. I codici dei giorni feriali vanno da 0 (lunedì) a 6 (domenica); i numeri dei mesi vanno da 1 a 12. |
8 | calendar.prcal(year,w = 2,l = 1,c = 6) Come stampare calendar.calendar (anno, w, l, c). |
9 | calendar.prmonth(year,month,w = 2,l = 1) Come stampare calendar.month (anno, mese, w, l). |
10 | calendar.setfirstweekday(weekday) Imposta il primo giorno di ogni settimana sul codice della settimana della settimana. I codici dei giorni feriali vanno da 0 (lunedì) a 6 (domenica). |
11 | calendar.timegm(tupletime) L'inverso di time.gmtime: accetta un istante di tempo in forma di tupla temporale e restituisce lo stesso istante di un numero in virgola mobile di secondi dall'epoca. |
12 | calendar.weekday(year,month,day) Restituisce il codice del giorno della settimana per la data specificata. I codici dei giorni feriali vanno da 0 (lunedì) a 6 (domenica); i numeri dei mesi vanno da 1 (gennaio) a 12 (dicembre). |
Altri moduli e funzioni
Se sei interessato, qui troverai un elenco di altri importanti moduli e funzioni per giocare con data e ora in Python -
- Il modulo datetime
- Il modulo pytz
- Il modulo dateutil