Come convertire stringhe in datetime in Python
Pubblicato: 2022-12-20La conversione da un tipo di dati a un altro tipo di dati è fondamentale in qualsiasi linguaggio di programmazione. Quasi tutti i linguaggi di programmazione supportano le conversioni di tipo per i tipi di dati incorporati.
I tipi di dati personalizzati come datetime richiedono moduli aggiuntivi per le conversioni. Abbiamo bisogno di moduli, specialmente per datetime
conversioni di data e ora poiché lavorarci non è mai stato facile per i programmatori. Fortunatamente, Python ha moduli integrati per lavorare con datetime.
Impareremo come convertire una stringa datetime
in un oggetto datetime
in Python utilizzando diversi moduli. Prima di entrare in questo, vediamo perché dobbiamo convertirlo in primo luogo.
Perché dobbiamo convertire una stringa datetime in un oggetto datetime?
Quando dobbiamo lavorare con le date, non è facile lavorare se sono nel formato stringa. Convertirli in formato datetime rende molto semplice lavorare con loro. Le date nelle stringhe sono come stringhe normali. Non avrà metodi speciali per lavorare con le date. Avrà metodi di stringa generali, di cui non avremo bisogno mentre lavoriamo con le date.
Diciamo che dobbiamo confrontare due date. Se sono in formato stringa, possiamo confrontarli correttamente. Se sono in formato datetime
, possiamo usare gli operatori di confronto come i numeri.
Questo è solo uno scenario in cui la conversione in formato datetime
semplifica le cose. Esistono molti scenari come l'aggiunta di date, la sottrazione, la gestione dei fusi orari, ecc., In cui la conversione della stringa datetime
in oggetto datetime
rende la nostra vita più semplice che mai.
Detto questo, vediamo diversi modi per convertire una stringa datetime
in un oggetto datetime
. Useremo datetime
integrato e moduli dateutil
di terze parti per convertire la stringa datetime
in oggetto datetime
. Iniziamo con il modulo datetime
Usando data e ora
Il datetime
è un modulo integrato di Python che viene utilizzato per lavorare con date e orari. Ci sono molte lezioni in questo modulo che ci aiutano a lavorare con date e orari. Useremo la classe datetime.datetime
per la conversione.
Il datetime.datetime
ha molti metodi. Siamo interessati al metodo strptime
che ci aiuterà nella conversione. Controlliamo.
datetime.strptime
Il metodo datetime.strptime
viene utilizzato per convertire la stringa datetime
in un oggetto datetime
. Prende due stringhe, una è la stringa datetime
e l'altra è il formato di quella stringa datetime
. E restituisce l'oggetto datetime
.
Vediamo un esempio
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
Se esegui il codice precedente, vedrai il seguente output.
2022-12-19 21:37:56
Abbiamo preso una stringa datetime
e l'abbiamo convertita in un oggetto datetime
usando il metodo datetime.strptime
. Assicurati che il formato che stai fornendo al metodo corrisponda esattamente alla stringa datetime
. Se non corrispondono, potresti ricevere un errore o un output errato.
Abbiamo utilizzato alcuni codici di formattazione per il formato datetime
. Puoi fare riferimento a tutti i codici di formato nei documenti.
Il metodo datetime.strptime
restituisce complete datetime
. Se vuoi ottenere la data e l'ora separatamente, possiamo usare i metodi data e time
dell'oggetto datetime
. Vediamo il codice.
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())
Esegui il codice precedente e vedrai il seguente output.
Date: 2022-12-19 Time: 21:37:56
I metodi date
e time
restituiranno rispettivamente i loro oggetti. Avranno di nuovo i rispettivi metodi per date e orari.
Abbiamo fornito le stringhe e i formati corretti per il metodo datetime.strptime
che abbiamo visto sopra. Se non li abbiamo forniti correttamente, otterremo errori. Vediamo come gestire questi errori. Eseguire il codice seguente.
from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
Il codice precedente genererà un errore perché la formattazione non corrisponde alla stringa datetime
. Per gestire questo tipo di errori, possiamo usare try-except di Python. Aggiungiamolo.
from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)
Ora, esegui di nuovo il codice. Verrà visualizzato il seguente messaggio di errore senza violare il codice.
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
Allo stesso modo, possiamo aggiungere anche try-except per il prossimo metodo parser.parse
. Ci aiuta a evitare di rompere il codice nel mezzo. Questo non è particolarmente correlato a questo contesto tutorial, ma ti ricorderà di usarlo nel tuo codice.
Questo è tutto per il modulo datetime
. Passiamo al modulo successivo dateutil
.
Usando dateutil
Il modulo dateutil
fornisce estensioni al modulo datetime
. Rende il lavoro con date e orari molto più semplice con molti metodi di facile utilizzo. Installiamo il modulo con il seguente comando.
pip install python-dateutil
Il metodo che ci interessa è dateutil.parser.parse
. Vediamo come convertire la stringa datetime
in oggetto datetime
.
parser.parse
Il metodo parser.parse
prenderà una stringa datetime
e la converte in un rispettivo formato oggetto datetime
. Non è necessario fornire alcuna formattazione per questo metodo. Converte automaticamente la data stringa datetime
in oggetto datetime
. Vediamo un esempio.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))
Se esegui il codice precedente, vedrai il seguente output.
2022-12-19 21:37:56
La stringa datetime
deve essere in un formato particolare accettato dal metodo parser.parse
. Genererà un errore se il formato della stringa datetime
non è conforme al formato desiderato. Puoi controllare tutti i formati di stringhe datetime accettati per le conversioni automatiche.
Poiché il metodo parser.parse
restituisce l'oggetto datetime
, possiamo accedere agli oggetti date
e time
separatamente come abbiamo visto con il modulo datetime
. Vediamo il codice.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())
Puoi vedere l'output di seguito se esegui il codice sopra.
Date: 2022-12-19 Time: 21:37:56
Come puoi vedere, dateutil
semplifica il lavoro comparativo con le date e gli orari. Puoi esplorare il modulo nei documenti.
Conclusione
Abbiamo utilizzato un modulo integrato e un modulo di terze parti per convertire la stringa datetime
in un oggetto DateTime. C'è un altro modulo integrato chiamato time
con il quale possiamo convertire la stringa datetime
in un oggetto DateTime simile ai moduli datetime
e dateutil
. Prova tu stesso. Non sarà difficile perché hai già fatto una cosa simile con altri moduli.
Potrebbero esserci più librerie con le quali possiamo ottenere la stessa cosa. I moduli che abbiamo utilizzato in cosa tutorial sono standard e ampiamente utilizzati. Puoi esplorare di più su altri moduli e scegliere quello più adatto a te.
Puoi anche esplorare come calcolare la differenza di tempo in Python.
Felice codifica