In questo articolo imparerai a creare un oggetto datetime da una stringa (con l'aiuto di esempi).
Il strptime()
metodo crea un oggetto datetime dalla stringa data.
Nota: non è possibile creare datetime
oggetti da ogni stringa. La stringa deve essere in un determinato formato.
Esempio 1: stringa in oggetto datetime
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("type of date_string =", type(date_string)) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object) print("type of date_object =", type(date_object))
Quando esegui il programma, l'output sarà:
date_string = 21 giugno 2018 tipo di date_string = date_object = 2018-06-21 00:00:00 tipo di date_object =
Come funziona strptime ()?
Il strptime()
metodo della classe accetta due argomenti:
- stringa (che può essere convertita in datetime)
- codice di formato
In base alla stringa e al codice di formato utilizzati, il metodo restituisce il suo datetime
oggetto equivalente .
Nell'esempio sopra:
Qui,
%d
- Rappresenta il giorno del mese. Esempio: 01, 02,…, 31%B
- Nome completo del mese. Esempio: gennaio, febbraio ecc.%Y
- Anno in quattro cifre. Esempio: 2018, 2019 ecc.
Esempio 2: stringa all'oggetto datetime
from datetime import datetime dt_string = "12/11/2018 09:15:32" # Considering date is in dd/mm/yyyy format dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S") print("dt_object1 =", dt_object1) # Considering date is in mm/dd/yyyy format dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S") print("dt_object2 =", dt_object2)
Quando esegui il programma, l'output sarà:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Elenco codici formato
La tabella seguente mostra tutti i codici di formato che è possibile utilizzare.
Direttiva | Senso | Esempio |
%a | Nome abbreviato del giorno della settimana. | Dom, lun, … |
%A | Nome completo del giorno della settimana. | Domenica lunedì,… |
%w | Giorno della settimana come numero decimale. | 0, 1,…, 6 |
%d | Giorno del mese come decimale con riempimento zero. | 01, 02,…, 31 |
%-d | Giorno del mese come numero decimale. | 1, 2,…, 30 |
%b | Nome del mese abbreviato. | Gennaio, febbraio, …, dicembre |
%B | Nome completo del mese. | Gennaio febbraio,… |
%m | Mese come numero decimale con riempimento di zero. | 01, 02,…, 12 |
%-m | Mese come numero decimale. | 1, 2, …, 12 |
%y | Anno senza secolo come numero decimale con riempimento di zero. | 00, 01,…, 99 |
%-y | Anno senza secolo come numero decimale. | 0, 1,…, 99 |
%Y | Anno con secolo come numero decimale. | 2013, 2019 ecc. |
%H | Ora (formato a 24 ore) come numero decimale con riempimento di zero. | 00, 01,…, 23 |
%-H | Ora (orologio a 24 ore) come numero decimale. | 0, 1, …, 23 |
%I | Ora (orologio a 12 ore) come numero decimale con riempimento di zero. | 01, 02,…, 12 |
%-I | Ora (orologio a 12 ore) come numero decimale. | 1, 2,… 12 |
%p | AM o PM delle impostazioni locali. | AM PM |
%M | Minuto come numero decimale con riempimento di zero. | 00, 01,…, 59 |
%-M | Minuto come numero decimale. | 0, 1,…, 59 |
%S | Secondo come numero decimale con riempimento di zero. | 00, 01,…, 59 |
%-S | Secondo come numero decimale. | 0, 1,…, 59 |
%f | Microsecondo come numero decimale, riempito con zero a sinistra. | 000000 - 999999 |
%z | Scostamento UTC nel formato + HHMM o -HHMM. | |
%Z | Nome del fuso orario. | |
%j | Giorno dell'anno come numero decimale con riempimento zero. | 001, 002,…, 366 |
%-j | Giorno dell'anno come numero decimale. | 1, 2, …, 366 |
%U | Numero della settimana dell'anno (domenica come primo giorno della settimana). Tutti i giorni di un nuovo anno che precede la prima domenica sono considerati nella settimana 0. | 00, 01,…, 53 |
%W | Numero della settimana dell'anno (lunedì come primo giorno della settimana). Tutti i giorni di un nuovo anno che precede il primo lunedì sono considerati nella settimana 0. | 00, 01,…, 53 |
%c | Data e ora appropriate di Locale. | Lun 30 settembre 07:06:05 2013 |
%x | Rappresentazione della data appropriata di Locale. | 30/09/13 |
%X | Rappresentazione dell'ora appropriata di Locale. | 07:06:05 |
%% | Un carattere letterale "%". | % |
ValueError in strptime ()
Se la stringa (primo argomento) e il codice di formato (secondo argomento) passati a strptime()
non corrispondono, otterrai ValueError
. Per esempio:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Se esegui questo programma, riceverai un errore.
ValueError: i dati relativi all'ora '12 / 11/2018 'non corrispondono al formato'% d% m% Y '
Letture consigliate: Python strftime ()