Python strptime () - niz do objekta datetime

U ovom ćete članku naučiti stvoriti datumsko-vremenski objekt iz niza (uz pomoć primjera).

strptime()Metoda stvara datetime objekt iz zadanog niza.

Napomena: Ne možete stvoriti datetimeobjekt iz svakog niza. Niz mora biti u određenom formatu.

Primjer 1: niz u objekt datum-vrijeme

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

Kada pokrenete program, izlaz će biti:

 date_string = 21. lipnja 2018. vrsta date_string = date_object = 2018-06-21 00:00:00 vrsta date_object = 

Kako strptime () radi?

Metoda strptime()klase uzima dva argumenta:

  • niz (koji se pretvara u datum i vrijeme)
  • kod formata

Na temelju korištenog koda niza i formata metoda vraća svoj ekvivalentni datetimeobjekt.

U gornjem primjeru:

Ovdje,

  • %d- Predstavlja dan u mjesecu. Primjer: 01, 02, …, 31
  • %B- Ime mjeseca u cijelosti. Primjer: siječanj, veljača itd.
  • %Y- Godina s četiri znamenke. Primjer: 2018., 2019. itd.

Primjer 2: niz u objekt datum-vrijeme

  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) 

Kada pokrenete program, izlaz će biti:

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

Formatiranje popisa kodova

Tablica u nastavku prikazuje sve kodove formata koje možete koristiti.

Direktiva Značenje Primjer
%a Skraćeni naziv radnog dana. Ned, ponedjeljak …
%A Puno ime radnog dana. Nedjelja ponedjeljak,…
%w Dan u tjednu kao decimalni broj. 0, 1,…, 6
%d Dan u mjesecu kao nula-podstavljena decimala. 01, 02, …, 31
%-d Dan u mjesecu kao decimalni broj. 1, 2,…, 30
%b Skraćeni naziv mjeseca. Siječanj, veljača,…, prosinac
%B Puno ime mjeseca. Siječanj veljača,…
%m Mjesec kao nulti podstavljeni decimalni broj. 01, 02,…, 12
%-m Mjesec kao decimalni broj. 1, 2,…, 12
%y Godina bez stoljeća kao nultom podstavljeni decimalni broj. 00, 01, …, 99
%-y Godina bez stoljeća kao decimalni broj. 0, 1,…, 99
%Y Godina sa stoljećem kao decimalnim brojem. 2013, 2019 itd.
%H Sat (24-satni sat) kao decimalni broj podpunjen nulom. 00, 01, …, 23
%-H Sat (24-satni sat) kao decimalni broj. 0, 1,…, 23
%I Sat (12-satni sat) kao decimalni broj podpunjen nulom. 01, 02,…, 12
%-I Sat (12-satni sat) kao decimalni broj. 1, 2,… 12
%p Lokalno AM ili PM. PRIJEPODNE POSLJEPODNE
%M Minuta kao decimalni broj podpunjen nulom. 00, 01, …, 59
%-M Minuta kao decimalni broj. 0, 1,…, 59
%S Drugo kao decimalni broj podpunjen nulom. 00, 01, …, 59
%-S Drugo kao decimalni broj. 0, 1,…, 59
%f Mikrosekunda kao decimalni broj, slijepo obložena nulom. 000000 - 999999
%z UTC pomak u obliku + HHMM ili -HHMM.
%Z Naziv vremenske zone.
%j Dan u godini kao decimalni broj podpunjen nulom. 001, 002,…, 366
%-j Dan u godini kao decimalni broj. 1, 2,…, 366
%U Broj tjedna u godini (nedjelja kao prvi dan u tjednu). Svi dani u novoj godini koji prethode prvoj nedjelji smatraju se u tjednu 0. 00, 01, …, 53
%W Broj tjedna u godini (ponedjeljak kao prvi dan u tjednu). Svi dani u novoj godini koji prethode prvom ponedjeljku smatraju se u tjednu 0. 00, 01, …, 53
%c Localeov odgovarajući datum i vrijeme. Ponedjeljak 30. rujna 07:06:05 2013
%x Localeov odgovarajući datumski prikaz. 30.09.13
%X Localeov odgovarajući vremenski prikaz. 07:06:05
%% Doslovni znak '%'. %

ValueError u strptime ()

Ako se niz (prvi argument) i kod formata (drugi argument) prosljeđeni u strptime()ne podudaraju, dobit ćete ValueError. Na primjer:

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

Ako pokrenete ovaj program, dobit ćete pogrešku.

 ValueError: podaci o vremenu '12 / 11/2018 'ne odgovaraju formatu'% d% m% Y ' 

Preporučena čitanja: Python strftime ()

Zanimljivi članci...