In Python, data e ora non sono tipi di dati propri, ma un modulo denominato Appuntamento in Python può essere importato per funzionare con la data e l'ora. Modulo Datetime Python è integrato in Python, quindi non è necessario installarlo esternamente.
In questo articolo esploreremo come DateTime in Python funziona e quali sono le classi principali del modulo DateTime in Python.
Tabella dei contenuti
- Modulo DateTime Python
- Classe di date Python
- Classe Python Time
- Classe Datetime Python
- Classe Timedelta di Python
- Python DateTime.tzinfo()
- Fuso orario Python DateTime
Modulo DateTime Python
Data/ora Python il modulo fornisce classi per lavorare con data e ora. Queste classi forniscono diverse funzioni per gestire date, ore e intervalli di tempo. Date e DateTime sono un oggetto in Python, quindi quando li manipoli, stai manipolando oggetti e non stringhe o timestamp.
Il modulo DateTime è classificato in 6 classi principali:
- data – Una data idealizzata e ingenua, presupponendo che l’attuale calendario gregoriano sia sempre stato, e sempre sarà, in vigore. I suoi attributi sono anno, mese e giorno. puoi fare riferimento a – Python DateTime – Classe di data
- tempo – Un tempo idealizzato, indipendente da qualsiasi giorno particolare, assumendo che ogni giorno abbia esattamente 24*60*60 secondi. I suoi attributi sono ora, minuto, secondo, microsecondo e tzinfo. Puoi fare riferimento a – Python DateTime: classe temporale
- appuntamento – È una combinazione di data e ora insieme agli attributi anno, mese, giorno, ora, minuto, secondo, microsecondo e tzinfo. Puoi fare riferimento a – Python DateTime – Classe DateTime
- delta temporale – Una durata che esprime la differenza tra due istanze di data, ora o datetime con una risoluzione in microsecondi. Puoi fare riferimento a – Python DateTime – Classe Timedelta
- tzinfo – Fornisce oggetti informativi sul fuso orario. Puoi fare riferimento a – Python – datetime.tzinfo()
- fuso orario – Una classe che implementa la classe base astratta tzinfo come un offset fisso dall'UTC (Nuovo nella versione 3.2). Puoi fare riferimento a – Gestire il fuso orario in Python
Classe di date Python
La classe date viene utilizzata per creare un'istanza di oggetti data in Python. Quando viene istanziato un oggetto di questa classe, rappresenta una data nel formato AAAA-MM-GG . Il costruttore di questa classe necessita di tre argomenti obbligatori anno, mese e data.
Sintassi della classe Date Python
class datetime.date(year, month, day)>
Gli argomenti devono essere compresi nel seguente intervallo:
- MINANNO <= anno <= MAXANNO
- 1 <= mese <= 12
- 1 <= giorno <= numero di giorni nel mese e nell'anno specificati
Nota – Se l'argomento non è un numero intero verrà sollevata una TypeError e se è fuori dall'intervallo verrà sollevata una ValueError.
Oggetto data che rappresenta i dati in Python
Inizializzazione del costruttore e passaggio di argomenti nel formato anno, mese e data.
Python3
# Python program to> # demonstrate date class> # import the date class> from> datetime>import> date> my_date>=> date(>1996>,>12>,>11>)> print>(>'Date passed as argument is'>, my_date)> # Uncommenting my_date = date(1996, 12, 39)> # will raise an ValueError as it is> # outside range> # uncommenting my_date = date('1996', 12, 11)> # will raise a TypeError as a string is> # passed instead of integer> |
>
>
Produzione:
Date passed as argument is 1996-12-11>
Traceback (most recent call last): File '/home/ccabfb570d9bd1dcd11dc4fe55fd6ba2.py', line 14, in my_date = date(1996, 12, 39) ValueError: day is out of range for month Traceback (most recent call last): File '/home/53b974e10651f1853eee3c004b48c481.py', line 18, in my_date = date('1996', 12, 11) TypeError: an integer is required (got type str)> Ottieni la data corrente
Per restituire la data locale corrente, viene utilizzata la funzione today() della classe date. La funzione today() viene fornita con diversi attributi (anno, mese e giorno). Questi possono essere stampati individualmente.
Python3
# Python program to> # print current date> from> datetime>import> date> # calling the today> # function of date class> today>=> date.today()> print>(>'Today's date is'>, today)> |
>
>Produzione
Today's date is 2021-08-19>
Ottieni l'anno, il mese e la data di oggi
Possiamo ottenere gli attributi anno, mese e data dall'oggetto data utilizzando l'attributo anno, mese e data della classe data.
Python3
from> datetime>import> date> # date object of today's date> today>=> date.today()> print>(>'Current year:'>, today.year)> print>(>'Current month:'>, today.month)> print>(>'Current day:'>, today.day)> |
nuvola primaverile
>
>Produzione
Current year: 2021 Current month: 8 Current day: 19>
Ottieni la data dal timestamp
Possiamo creare oggetti data dai timestamp y=utilizzando il metodo fromtimestamp(). Il timestamp è il numero di secondi dal 1° gennaio 1970 UTC a una data particolare.
Python3
from> datetime>import> datetime> # Getting Datetime from timestamp> date_time>=> datetime.fromtimestamp(>1887639468>)> print>(>'Datetime from timestamp:'>, date_time)> |
>
>Produzione
Datetime from timestamp: 2029-10-25 16:17:48>
Converti data in stringa
Possiamo convertire l'oggetto data in una rappresentazione di stringa utilizzando due funzioni isoformat() e strftime().
Python3
from> datetime>import> date> > # calling the today> # function of date class> today>=> date.today()> > # Converting the date to the string> Str> => date.isoformat(today)> print>(>'String Representation'>,>Str>)> print>(>type>(>Str>))> |
>
>Produzione
String Representation 2021-08-19>
Elenco dei metodi di classe di data
| Nome della funzione | Descrizione |
|---|---|
| ctime() | Restituisce una stringa che rappresenta la data |
| daisocalendar() | Restituisce una data corrispondente al calendario ISO |
| fromisoformat() | Restituisce un oggetto data dalla rappresentazione stringa della data |
| daordinale() | Restituisce un oggetto data dall'ordinale gregoriano prolettico, dove il 1 gennaio dell'anno 1 ha ordinale 1 |
| da timestamp() | Restituisce un oggetto data dal timestamp POSIX |
| isocalendario() | Restituisce una tupla anno, settimana e giorno della settimana |
| isoformato() | Restituisce la rappresentazione in formato stringa della data |
| isogiorno della settimana() | Restituisce il giorno della settimana come numero intero dove lunedì è 1 e domenica è 7 |
| sostituire() | Modifica il valore dell'oggetto data con il parametro specificato |
| strftime() | Restituisce una rappresentazione di stringa della data con il formato specificato |
| timetuple() | Restituisce un oggetto di tipo time.struct_time |
| Oggi() | Restituisce la data locale corrente |
| toordinale() | Restituisci l'ordinale gregoriano prolettico della data, dove il 1° gennaio dell'anno 1 ha l'ordinale 1 |
| giorno feriale() | Restituisce il giorno della settimana come numero intero dove lunedì è 0 e domenica è 6 |
Classe Python Time
La classe time crea l'oggetto time che rappresenta l'ora locale, indipendentemente da qualsiasi giorno.
Sintassi del costruttore:
class datetime.time(ora=0, minuto=0, secondo=0, microsecondo=0, tzinfo=None, *, fold=0)
Tutti gli argomenti sono facoltativi. tzinfo può essere None altrimenti tutti gli attributi devono essere numeri interi nel seguente intervallo –
- 0 <= ora < 24
- 0 <= minuto < 60
- 0 <= secondo < 60
- 0 <= microsecondo < 1.000.000
- piegare [0, 1]
Esempio 1: oggetto Time che rappresenta il tempo in Python
Python3
# Python program to> # demonstrate time class> from> datetime>import> time> # calling the constructor> my_time>=> time(>13>,>24>,>56>)> print>(>'Entered time'>, my_time)> # calling constructor with 1> # argument> my_time>=> time(minute>=>12>)> print>(>'
Time with one argument'>, my_time)> # Calling constructor with> # 0 argument> my_time>=> time()> print>(>'
Time without argument'>, my_time)> # Uncommenting time(hour = 26)> # will rase an ValueError as> # it is out of range> # uncommenting time(hour ='23')> # will raise TypeError as> # string is passed instead of int> |
>
>
Produzione:
Entered time 13:24:56 Time with one argument 00:12:00 Time without argument 00:00:00>
Traceback (most recent call last): File '/home/95ff83138a1b3e67731e57ec6dddef25.py', line 21, in print(time(hour=26)) ValueError: hour must be in 0..23 Traceback (most recent call last): File '/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py', line 21, in print(time(hour='23')) TypeError: an integer is required (got type str)>
Esempio 2: ottenere ore, minuti, secondi e microsecondi
Dopo aver creato un oggetto tempo, i suoi attributi possono anche essere stampati separatamente.
Python3
from> datetime>import> time> Time>=> time(>11>,>34>,>56>)> print>(>'hour ='>, Time.hour)> print>(>'minute ='>, Time.minute)> print>(>'second ='>, Time.second)> print>(>'microsecond ='>, Time.microsecond)> |
quante città ci sono negli stati uniti d'america
>
>
Produzione:
hour = 11 minute = 34 second = 56 microsecond = 0>
Esempio 3: convertire l'oggetto Time in String
Possiamo convertire l'oggetto time in stringa utilizzando il metodo isoformat().
Python3
from> datetime>import> time> # Creating Time object> Time>=> time(>12>,>24>,>36>,>1212>)> # Converting Time object to string> Str> => Time.isoformat()> print>(>'String Representation:'>,>Str>)> print>(>type>(>Str>))> |
>
>Produzione
String Representation: 12:24:36.001212>
Elenco dei metodi delle classi temporali
| Nome della funzione | Descrizione |
|---|---|
| dst() | Restituisce tzinfo.dst() è tzinfo non è None |
| fromisoformat() | Restituisce un oggetto ora dalla rappresentazione di stringa dell'ora |
| isoformato() | Restituisce la rappresentazione in formato stringa dell'ora dall'oggetto time |
| sostituire() | Modifica il valore dell'oggetto tempo con il parametro specificato |
| strftime() | Restituisce una rappresentazione di stringa dell'ora con il formato specificato |
| nometz() | Restituisce tzinfo.tzname() è tzinfo e non None |
| utcoffset() | Restituisce tzinfo.utcffsets() è tzinfo non è None |
Classe Datetime Python
IL Classe DateTime contiene informazioni sia sulla data che sull'ora. Come un oggetto data, datetime presuppone l'attuale calendario gregoriano esteso in entrambe le direzioni; come un oggetto time, datetime presuppone che ci siano esattamente 3600*24 secondi in ogni giorno.
Sintassi del costruttore:
classe datetime.datetime(anno, mese, giorno, ora=0, minuto=0, secondo=0, microsecondo=0, tzinfo=None, *, fold=0)
Gli argomenti anno, mese e giorno sono obbligatori. tzinfo può essere None, il resto tutti gli attributi devono essere un numero intero nel seguente intervallo –
- MINANNO <= anno <= MAXANNO
- 1 <= mese <= 12
- 1 <= giorno <= numero di giorni nel mese e nell'anno specificati
- 0 <= ora < 24
- 0 <= minuto < 60
- 0 <= secondo < 60
- 0 <= microsecondo < 1.000.000
- piegare [0, 1]
Nota – Passare un argomento diverso da intero solleverà un TypeError e passare argomenti fuori dall'intervallo solleverà ValueError.
Oggetto DateTime che rappresenta DateTime in Python
Python3
balbero e b albero
# Python program to> # demonstrate datetime object> from> datetime>import> datetime> # Initializing constructor> a>=> datetime(>1999>,>12>,>12>)> print>(a)> # Initializing constructor> # with time parameters as well> a>=> datetime(>1999>,>12>,>12>,>12>,>12>,>12>,>342380>)> print>(a)> |
>
>
Produzione:
1999-12-12 00:00:00 1999-12-12 12:12:12.342380>
Ottieni anno, mese, ora, minuto e timestamp
Dopo aver creato un oggetto DateTime, i suoi attributi possono anche essere stampati separatamente.
Python3
from> datetime>import> datetime> a>=> datetime(>1999>,>12>,>12>,>12>,>12>,>12>)> print>(>'year ='>, a.year)> print>(>'month ='>, a.month)> print>(>'hour ='>, a.hour)> print>(>'minute ='>, a.minute)> print>(>'timestamp ='>, a.timestamp())> |
>
>
Produzione:
year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>
Data e ora attuali
È possibile stampare la data e l'ora correnti utilizzando la funzione Datetime.now(). La funzione now() restituisce la data e l'ora locali correnti.
Python3
from> datetime>import> datetime> # Calling now() function> today>=> datetime.now()> print>(>'Current date and time is'>, today)> |
>
>
Produzione:
Current date and time is 2019-10-25 11:12:11.289834>
Converti Python Datetime in stringa
Possiamo convertire Datetime in stringa in Python usando il file datetime.strftime e metodi datetime.isoformat.
Python3
from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> string>=> dt.isoformat(now)> print>(string)> print>(>type>(string))> |
>
>Produzione
2021-08-19T18:13:25.346259>
Elenco dei metodi di classe Datetime
| Nome della funzione | Descrizione |
|---|---|
| fuso orario() | Restituisce l'oggetto DateTime contenente informazioni sul fuso orario. |
| combinare() | Combina gli oggetti data e ora e restituisce un oggetto DateTime |
| ctime() | Restituisce una rappresentazione di stringa di data e ora |
| data() | Restituisce l'oggetto della classe Date |
| fromisoformat() | Restituisce un oggetto datetime dalla rappresentazione di stringa della data e dell'ora |
| daordinale() | Restituisce un oggetto data dall'ordinale gregoriano prolettico, dove il 1 gennaio dell'anno 1 ha ordinale 1. L'ora, il minuto, il secondo e il microsecondo sono 0 |
| da timestamp() | Restituisce data e ora dal timestamp POSIX |
| isocalendario() | Restituisce una tupla anno, settimana e giorno della settimana |
| isoformato() | Restituisce la rappresentazione in formato stringa di data e ora |
| isogiorno della settimana() | Restituisce il giorno della settimana come numero intero dove lunedì è 1 e domenica è 7 |
| Ora() | Restituisce la data e l'ora locali correnti con il parametro tz |
| sostituire() | Modifica gli attributi specifici dell'oggetto DateTime |
| strftime() | Restituisce una rappresentazione di stringa dell'oggetto DateTime con il formato specificato |
| strptime() | Restituisce un oggetto DateTime corrispondente alla stringa della data |
| tempo() | Restituisce l'oggetto della classe Time |
| timetuple() | Restituisce un oggetto di tipo time.struct_time |
| timetz() | Restituisce l'oggetto della classe Time |
| Oggi() | Restituisce DateTime locale con tzinfo come None |
| toordinale() | Restituisci l'ordinale gregoriano prolettico della data, dove il 1° gennaio dell'anno 1 ha l'ordinale 1 |
| nometz() | Restituisce il nome del fuso orario |
| utcfromtimestamp() | Restituisce UTC dal timestamp POSIX |
| utcoffset() | Restituisce l'offset UTC |
| utcnow() | Restituisce la data e l'ora UTC correnti |
| giorno feriale() | Restituisce il giorno della settimana come numero intero dove lunedì è 0 e domenica è 6 |
Classe Timedelta di Python
La classe timedelta di Python viene utilizzata per calcolare le differenze nelle date e può anche essere utilizzata per la manipolazione delle date in Python. È uno dei modi più semplici per eseguire manipolazioni della data.
Sintassi del costruttore:
classe datetime.timedelta(giorni=0, secondi=0, microsecondi=0, millisecondi=0, minuti=0, ore=0, settimane=0)
Restituisce: Data
Aggiungi giorni all'oggetto DateTime
La dimostrazione della funzione timedelta
Python3
from> datetime>import> datetime, timedelta> # Using current time> ini_time_for_now>=> datetime.now()> # printing initial_date> print>(>'initial_date'>,>str>(ini_time_for_now))> # Calculating future dates> # for two years> future_date_after_2yrs>=> ini_time_for_now>+> timedelta(days>=>730>)> future_date_after_2days>=> ini_time_for_now>+> timedelta(days>=>2>)> # printing calculated future_dates> print>(>'future_date_after_2yrs:'>,>str>(future_date_after_2yrs))> print>(>'future_date_after_2days:'>,>str>(future_date_after_2days))> |
>
>
Produzione:
initial_date 2019-10-25 12:01:01.227848 future_date_after_2yrs: 2021-10-24 12:01:01.227848 future_date_after_2days: 2019-10-27 12:01:01.227848>
Differenza tra due date e orari
Utilizzando questa classe è possibile trovare anche le differenze di data e ora.
Python3
# Timedelta function demonstration> from> datetime>import> datetime, timedelta> # Using current time> ini_time_for_now>=> datetime.now()> # printing initial_date> print>(>'initial_date'>,>str>(ini_time_for_now))> # Some another datetime> new_final_time>=> ini_time_for_now>+> > >timedelta(days>=>2>)> # printing new final_date> print>(>'new_final_time'>,>str>(new_final_time))> # printing calculated past_dates> print>(>'Time difference:'>,>str>(new_final_time>-> >ini_time_for_now))> |
>
>
Produzione:
initial_date 2019-10-25 12:02:32.799814 new_final_time 2019-10-27 12:02:32.799814 Time difference: 2 days, 0:00:00>
Operazioni supportate dalla classe Timedelta
| Operatore | Descrizione |
|---|---|
| Aggiunta (+) | Aggiunge e restituisce due oggetti timedelta |
| Sottrazione (-) | Sottrae e restituisce due oggetti timedelta |
| Moltiplicazione (*) | Moltiplica l'oggetto timedelta con float o int |
| Divisione (/) | Divide l'oggetto timedelta con float o int |
| Divisione del piano (//) | Divide l'oggetto timedelta con float o int e restituisce l'intero del valore minimo dell'output |
| Modulo (%) | Divide due oggetti timedelta e restituisce il resto |
| +(delta temporale) | Restituisce lo stesso oggetto timedelta |
| -(delta temporale) | Restituisce il risultante di -1*timedelta |
| addominali (delta temporale) | Restituisce +(timedelta) se timedelta.giorni> 1=0 altrimenti restituisce -(timedelta) |
| str(deltatempo) | Restituisce una stringa nel formato (+/-) giorno[s], HH:MM:SS.UUUUUU |
| repr(timedelta) | Restituisce la rappresentazione della stringa sotto forma di chiamata al costruttore |
Formato DateTime in Python
La formattazione di DateTime può essere molto necessaria poiché la rappresentazione della data può differire da un luogo all'altro. In alcuni paesi può essere aaaa-mm-gg e in altri paesi può essere gg-mm-aaaa. Per formattare Python Datetime è possibile utilizzare le funzioni strptime e strftime.
Python Datetime strftime
Un metodo strftime() converte la data, l'ora o l'oggetto DateTime specificati nella rappresentazione di stringa del formato specificato.
Formato data/ora Python
Programma Python per dimostrare la funzione strftime()
sql seleziona come
Python3
tipi di alberi binari
from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> print>(>'Without formatting'>, now)> # Example 1> s>=> now.strftime(>'%A %m %-Y'>)> print>(>'
Example 1:'>, s)> # Example 2> s>=> now.strftime(>'%a %-m %y'>)> print>(>'
Example 2:'>, s)> # Example 3> s>=> now.strftime(>'%-I %p %S'>)> print>(>'
Example 3:'>, s)> # Example 4> s>=> now.strftime(>'%H:%M:%S'>)> print>(>'
Example 4:'>, s)> |
>
>Produzione
Without formatting 2021-08-19 18:16:25.881661 Example 1: Thursday 08 2021 Example 2: Thu 8 21 Example 3: 6 PM 25 Example 4: 18:16:25>
Nota: Per ulteriori informazioni, fare riferimento a metodo strftime() .
Python DateTime strptime
Il strptime() crea un oggetto DateTime dalla stringa data.
Esempio: DateTime strptime
Python3
# import datetime module from datetime> from> datetime>import> datetime> > # consider the time stamps from a list in string> # format DD/MM/YY H:M:S.micros> time_data>=> [>'25/05/99 02:35:8.023'>,>'26/05/99 12:45:0.003'>,> >'27/05/99 07:35:5.523'>,>'28/05/99 05:15:55.523'>]> > # format the string in the given format : day/month/year> # hours/minutes/seconds-micro seconds> format_data>=> '%d/%m/%y %H:%M:%S.%f'> > # Using strptime with datetime we will format string> # into datetime> for> i>in> time_data:> >print>(datetime.strptime(i, format_data))> |
>
>Produzione
1999-05-25 02:35:08.023000 1999-05-26 12:45:00.003000 1999-05-27 07:35:05.523000 1999-05-28 05:15:55.523000>
Python DateTime.tzinfo()
IL funzione datetime.now() non contiene informazioni relative ai fusi orari. Utilizza solo l'ora corrente del sistema. Tzinfo è una classe base astratta in Python. Non è possibile istanziarlo direttamente. Da questa classe astratta deve derivare una sottoclasse concreta e implementare i metodi da essa offerti.
Elenco di oggetti Python DateTime.tzinfo()
| Nome della funzione | Descrizione |
|---|---|
| dst() | Restituisce tzinfo.dst() è tzinfo non è None |
| dautc() | Lo scopo di questa funzione è regolare i dati di data e ora, restituendo un DateTime equivalente nell'ora locale di sé. |
| nometz() | Restituisce tzinfo.tzname() è tzinfo e non None |
| utcoffset() | Restituisce tzinfo.utcffsets() è tzinfo non è None |
Esempio
L'istanza della classe tzinfo può essere fornita ai costruttori di oggetti DateTime e time. Viene utilizzato in scenari come la conversione dell'ora locale in UTC o la contabilizzazione dell'ora legale.
Python3
import> datetime as dt> from> dateutil>import> tz> tz_string>=> dt.datetime.now(dt.timezone.utc).astimezone().tzname()> print>(>'datetime.now() :'>, tz_string)> NYC>=> tz.gettz(>'Europe / Berlin'>)> dt1>=> dt.datetime(>2022>,>5>,>21>,>12>,>0>)> dt2>=> dt.datetime(>2022>,>12>,>21>,>12>,>0>, tzinfo>=>NYC)> print>(>'Naive Object :'>, dt1.tzname())> print>(>'Aware Object :'>, dt2.tzname())> |
>
>
Produzione:
datetime.now() : IST Naive Object : None Aware Object : None>
Fuso orario Python DateTime
I fusi orari in DateTime possono essere utilizzati nel caso in cui si desideri visualizzare l'ora in base al fuso orario di una regione specifica. Questo può essere fatto utilizzando il modulo Pytz di Pitone. Questo modulo fornisce le funzionalità di conversione data-ora e aiuta gli utenti a servire basi di clienti internazionali.
Python3
from> datetime>import> datetime> from> pytz>import> timezone> format> => '%Y-%m-%d %H:%M:%S %Z%z'> # Current time in UTC> now_utc>=> datetime.now(timezone(>'UTC'>))> print>(now_utc.strftime(>format>))> timezones>=> [>'Asia/Kolkata'>,>'Europe/Kiev'>,>'America/New_York'>]> for> tzone>in> timezones:> ># Convert to Asia/Kolkata time zone> >now_asia>=> now_utc.astimezone(timezone(tzone))> >print>(now_asia.strftime(>format>))> |
>
>Produzione
2021-08-19 18:27:28 UTC+0000 2021-08-19 23:57:28 IST+0530 2021-08-19 21:27:28 EEST+0300 2021-08-19 14:27:28 EDT-0400>