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