Python strptime () - tekenreeks naar datetime-object

In dit artikel leer je om een ​​datetime-object te maken uit een string (met behulp van voorbeelden).

De strptime()methode maakt een datetime-object uit de opgegeven string.

Opmerking: u kunt niet datetimevan elke string een object maken . De string moet een bepaald formaat hebben.

Voorbeeld 1: tekenreeks naar datetime-object

  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)) 

Wanneer u het programma uitvoert, is de uitvoer:

 date_string = 21 juni 2018 type date_string = date_object = 2018-06-21 00:00:00 type date_object = 

Hoe strptime () werkt?

De strptime()klassemethode heeft twee argumenten:

  • string (die worden geconverteerd naar datetime)
  • opmaakcode

Op basis van de gebruikte tekenreeks en opmaakcode retourneert de methode het equivalente datetimeobject.

In het bovenstaande voorbeeld:

Hier,

  • %d- Vertegenwoordigt de dag van de maand. Voorbeeld: 01, 02, …, 31
  • %B- Volledige naam van de maand. Voorbeeld: januari, februari etc.
  • %Y- Jaar in vier cijfers. Voorbeeld: 2018, 2019 etc.

Voorbeeld 2: tekenreeks naar datetime-object

  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) 

Wanneer u het programma uitvoert, is de uitvoer:

 dt_object1 = 12-11-2018 09:15:32 dt_object2 = 11-12-2018 09:15:32 

Formaat codelijst

In de onderstaande tabel staan ​​alle formaatcodes die u kunt gebruiken.

Richtlijn Betekenis Voorbeeld
%a Afgekorte weekdagnaam. Zo, ma,…
%A Volledige naam van de weekdag. Zondag maandag,…
%w Weekdag als een decimaal getal. 0, 1, …, 6
%d Dag van de maand als decimaal met nul opgevuld. 01, 02, …, 31
%-d Dag van de maand als decimaal getal. 1, 2, …, 30
%b Afgekorte maandnaam. Jan, feb, …, dec
%B Volledige maandnaam. Januari februari,…
%m Maand als een met nul opgevuld decimaal getal. 01, 02, …, 12
%-m Maand als een decimaal getal. 1, 2, …, 12
%y Jaar zonder eeuw als een met nul opgevuld decimaal getal. 00, 01, …, 99
%-y Jaar zonder eeuw als decimaal getal. 0, 1, …, 99
%Y Jaar met eeuw als decimaal getal. 2013, 2019 enz.
%H Uur (24-uurs klok) als een nul opgevuld decimaal getal. 00, 01, …, 23
%-H Uur (24-uurs klok) als een decimaal getal. 0, 1, …, 23
%I Uur (12-uurs klok) als een nul opgevuld decimaal getal. 01, 02, …, 12
%-I Uur (12-uurs klok) als decimaal getal. 1, 2, … 12
%p Locale is AM of PM. AM PM
%M Minuut als een met nul opgevuld decimaal getal. 00, 01, …, 59
%-M Minuut als een decimaal getal. 0, 1, …, 59
%S Ten tweede als een met nul opgevuld decimaal getal. 00, 01, …, 59
%-S Ten tweede als een decimaal getal. 0, 1, …, 59
%f Microseconde als een decimaal getal, links opgevuld met nul. 000000 - 999999
%z UTC-offset in de vorm + UUMM of -UUMM.
%Z Naam tijdzone.
%j Dag van het jaar als een met nul opgevuld decimaal getal. 001, 002, …, 366
%-j Dag van het jaar als een decimaal getal. 1, 2, …, 366
%U Weeknummer van het jaar (zondag als eerste dag van de week). Alle dagen in een nieuw jaar voorafgaand aan de eerste zondag worden beschouwd als week 0. 00, 01, …, 53
%W Weeknummer van het jaar (maandag als eerste dag van de week). Alle dagen in een nieuw jaar voorafgaand aan de eerste maandag worden beschouwd als week 0. 00, 01, …, 53
%c De juiste weergave van datum en tijd van de locale. Ma 30 september 07:06:05 2013
%x De juiste datumweergave van de locale. 30/09/13
%X De juiste tijdsweergave van de locale. 07:06:05
%% Een letterlijk '%'-teken. %

ValueError in strptime ()

Als de string (eerste argument) en de formaatcode (tweede argument) die aan de doorgegeven strptime()is niet overeenkomen, krijg je ValueError. Bijvoorbeeld:

  from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object) 

Als u dit programma uitvoert, krijgt u een foutmelding.

 ValueError: tijdgegevens '12 / 11/2018 'komen niet overeen met indeling'% d% m% Y ' 

Aanbevolen resultaten: Python strftime ()

Interessante artikelen...