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