Python - 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 a partire dalle ore 00: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 funzione time.time () restituisce l'ora di sistema corrente in tick dalle ore 00:00:00 del 1 gennaio 1970 (epoca).
Esempio
#!/usr/bin/python
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: 7186862.73399
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 | 2008 |
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 |
La tupla sopra è equivalente a struct_timestruttura. Questa struttura ha i seguenti attributi:
Indice | Attributi | Valori |
---|---|---|
0 | tm_year | 2008 |
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 da un secondo dal valore a virgola mobile di epoch in una tupla di tempo, 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/python
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=2013, tm_mon=7,
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)
Ottenere l'ora formattata
Puoi formattare in qualsiasi momento secondo le tue esigenze, ma un metodo semplice per ottenere l'ora in un formato leggibile è asctime () -
#!/usr/bin/python
import time;
localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime
Ciò produrrebbe il seguente risultato:
Local current time : Tue Jan 13 10:17:09 2009
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/python
import calendar
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal
Ciò produrrebbe il seguente risultato:
Here is the calendar:
January 2008
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 30 31
Il Time Module
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. | Funzione con descrizione |
---|---|
1 | time.altzone L'offset del fuso orario dell'ora legale locale, in secondi a ovest di UTC, se definito. Questo è negativo se il fuso orario dell'ora legale locale è a est di UTC (come nell'Europa occidentale, incluso il Regno Unito). Usalo solo se la luce diurna è 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 a 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 una 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. |
Esaminiamo brevemente le funzioni:
Sono disponibili due importanti attributi con il modulo ora:
Sr.No. | Attributo con 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 DST, 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 cambiarlo, chiama la funzione calendar.setfirstweekday ().
Ecco un elenco delle funzioni disponibili con il modulo calendario :
Sr.No. | Funzione con descrizione |
---|---|
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, è 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 loro 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