I moduli datetime
e time
di Python includono entrambi un metodo di classe strptime()
per convertire le stringhe in oggetti.
In questo articolo, utilizzerai strptime()
per convertire le stringhe in oggetti datetime
e struct_time()
.
Effettua il deploy delle tue applicazioni Python da GitHub utilizzando DigitalOcean App Platform . Lascia che DigitalOcean si occupi di scalare la tua app.
Convertire una stringa in un oggetto datetime
utilizzando datetime.strptime()
La sintassi per il metodo datetime.strptime()
è:
datetime.strptime(date_string, format)
Il metodo datetime.strptime()
restituisce un oggetto datetime
che corrisponde alla stringa_data analizzata dal formato. Entrambi gli argomenti sono richiesti e devono essere stringhe.
Per i dettagli sui direttivi di formato utilizzati in datetime.strptime()
, fare riferimento ai Codici di Formato strftime()
e strptime()
nella documentazione di Python.
Convertire Stringa in Oggetto datetime.datetime()
Esempio
Il seguente esempio converte una stringa di data e ora in un oggetto datetime.datetime()
, e stampa il nome della classe e il valore dell’oggetto risultante:
from datetime import datetime
datetime_str = '09/19/22 13:55:26'
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')
print(type(datetime_object))
print(datetime_object) # stampato nel formato predefinito
L’output è:
<class 'datetime.datetime'>
2022-09-19 13:55:26
Convertire Stringa in Oggetto datetime.date()
Esempio
Il seguente esempio converte una stringa di data in un oggetto datetime.date()
, e stampa il tipo di classe e il valore dell’oggetto risultante:
from datetime import datetime
date_str = '09-19-2022'
date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object) # stampato nel formato predefinito
L’output è:
<class 'datetime.date'>
2022-09-19
Convertire Stringa in Oggetto datetime.time()
Esempio
L’esempio seguente converte una stringa di tempo in un oggetto datetime.time()
, e stampa il tipo di classe e il valore dell’oggetto risultante:
from datetime import datetime
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)
Il risultato è:
<class 'datetime.time'>
13:55:26
Convertire una stringa in un oggetto datetime.datetime()
con esempio di locale
L’esempio seguente converte una stringa di data in formato tedesco in un oggetto datetime.datetime()
, e stampa il tipo di classe e il valore dell’oggetto risultante:
from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag' # locale de_DE
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)
Il risultato è:
<class 'datetime.datetime'>
2022-12-16 00:00:00
Si noti che l’oggetto risultante non include il nome del giorno della settimana dalla stringa di input perché un oggetto datetime.datetime()
include il giorno della settimana solo come numero decimale.
Converting a String to a struct_time()
Object Using time.strptime()
La sintassi per il metodo time.strptime()
è:
time.strptime(time_string[, format])
Il metodo time.strptime()
restituisce un oggetto time.struct_time()
che corrisponde alla stringa_tempo analizzata dal formato. La stringa_tempo è richiesta e entrambi gli argomenti devono essere stringhe. Se formato non viene fornito, il valore predefinito è:
'%a %b %d %H:%M:%S %Y'
Questo corrisponde al formato restituito dalla funzione ctime()
.
Le direttive di formato sono le stesse per time.strptime()
e time.strftime()
. Per saperne di più sulle direttive di formato per il modulo time
nella documentazione di Python.
Convertire una Stringa in un Oggetto struct_time()
Fornendo un Esempio di Formato
Nell’esempio seguente, una stringa di tempo viene convertita in un oggetto time.struct_time()
fornendo l’argomento del formato, e viene stampato il valore dell’oggetto risultante:
import time
time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)
Il risultato è:
A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)
Come mostrato nel risultato, quando si converte una stringa in un oggetto time.struct_time()
, il metodo strptime()
utilizza valori segnaposto per qualsiasi direttiva di formato non definita nell’argomento del formato.
Convertire Stringa in Oggetto struct_time()
Utilizzando l’Esempio di Formato Predefinito
Se non si fornisce un argomento formato quando si converte una stringa di tempo in un oggetto time.struct_time()
, allora viene utilizzato il formato predefinito e si verifica un errore se la stringa di input non corrisponde esattamente al formato predefinito di:
'%a %b %d %H:%M:%S %Y'
Nell’esempio seguente si converte una stringa di tempo in un oggetto time.struct_time()
senza fornire alcun argomento formato, e si stampa il valore dell’oggetto risultante:
import time
# formato predefinito - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)
L’output è:
A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)
Come mostrato nell’output, quando si converte una stringa in un oggetto time.struct_time()
, il metodo strptime()
utilizza valori segnaposto per qualsiasi direttiva di formato che non è definita nell’argomento del formato o nel formato predefinito se non viene fornito alcun formato.
Risoluzione dei Problemi degli Errori di strptime()
Se l’input string non può essere analizzato da strptime()
utilizzando il formato fornito, viene sollevato un ValueError
. Puoi utilizzare il blocco try
per testare gli errori di parsing, insieme al blocco except
per stampare i risultati. I messaggi di ValueError
che ottieni quando utilizzi il metodo strptime()
spiegano chiaramente le cause principali degli errori di parsing. L’esempio seguente illustra alcuni errori comuni, come dati aggiuntivi e una non corrispondenza di formato:
from datetime import datetime
import time
datetime_str = '09/19/18 13:55:26'
try:
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
print('ValueError 1:', ve1)
time_str = '99::55::26'
try:
time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
print('ValueError 2:', ve2)
L’output è:
ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'
Conclusion
In questo tutorial, hai convertito stringhe di data e ora in oggetti datetime
e time
utilizzando Python. Continua il tuo apprendimento con altri tutorial di Python.
Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime