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 datetime
objekt 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 datetime
objekt.
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 ()