Python - strptime()


Metoda strptime() stvara objekt datetime iz danog stringa.


Primjer 1: String do objekta 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))


Kako radi strptime ()?

Metoda klase strptime() ima dva argumenta:

  • String (koji se pretvara u datetime)
  • Format koda

Na osnovu korištenog koda stringa i formata, metoda vraća ekvivalentni objekt datetime. U gornjem primjeru:




Ovdje je:

  • %d - Predstavlja dan u mjesecu. Primjer: 01, 02, ..., 31
  • %B - Ime mjeseca u cijelosti. Primjer: January, February itd.
  • %Y - Godina s četiri znamenke. Primjer: 2020, 2021 itd.

Primjer 2: String u datetime objektu

from datetime import datetime

dt_string = "12/11/2018 09:15:32"

# Datum u dd/mm/yyyy formatu
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# Datum u mm/dd/yyyy formatu
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)


Lista formata koda

Iduća tabela prikazuje sve kodove koje možete prosljediti u metodu strftime().

Direktiva Značenje Primjer
%a Skraćeni naziv radnog dana. Sun, Mon, ...
%A Puni naziv radnog dana. Sunday, Monday, ...
%w Radni dan kao decimalni broj. 0, 1, ..., 6
%d Dan u mjesecu kao decimalni broj bez nula. 01, 02, ..., 31
%-d Dan u mjesecu kao decimalni broj. 1, 2, ..., 30
%b Skraćeni naziv mjeseca. Jan, Feb, ..., Dec
%B Puni naziv mjeseca. Januar, Februar, ...
%m Mjesec kao decimalni broj s nulom. 01, 02, ..., 12
%-m Mjesec kao decimalni broj. 1, 2, ..., 12
%y Godina bez stoljeća kao decimalni broj bez nula. 00, 01, ..., 99
%-y Godina bez stoljeća kao decimalni broj. 0, 1, ..., 99
%Y Godina sa stoljećem kao decimalnim brojem. 2013, 2019 etc.
%H Sat (24-satni sat) kao decimalni broj s nulom. 00, 01, ..., 23
%-H Sat (24-satni sat) kao decimalni broj. 0, 1, ..., 23
%I Sat (12-satni sat) kao decimalni broj s nulom. 01, 02, ..., 12
%-I Sat (12-satni sat) kao decimalni broj. 1, 2, ... 12
%p Lokalni AM ili PM. AM, PM
%M Minuta kao decimalni broj s nulom. 00, 01, ..., 59
%-M Minuta kao decimalni broj. 0, 1, ..., 59
%S Sekunde kao decimalni broj s nulom. 00, 01, ..., 59
%-S Sekunde kao decimalni broj. 0, 1, ..., 59
%f Milisekunde kao decimalni broj, lijevo s nulom. 000000 - 999999
%z UTC pomak u obliku +HHMM ili -HHMM.
%Z Vrijeme vremenske zone
%j Dan u godini kao decimalni broj s nulom. 001, 002, ..., 366
%-j Dan u godini kao decimalni broj. 1, 2, ..., 366
%U Broj sedmica u godini (nedjelja kao prvi dan u sedmici). Svi dani u novoj godini koji prethode prvoj nedjelji smatraju se u sedmici 0. 00, 01, ..., 53
%W Broj sedmica u godini (ponedjeljak kao prvi dan u sedmici). Svi dani u novoj godini koji prethode prvom ponedjeljku smatraju se sedmicom 0.
%c Prikaz datuma i vremena na odgovarajućoj lokaciji. Mon Sep 29 07:06:05 2021
%x Prikaz datuma na odgovarajućoj lokaciji. 09/29/21
%X Prikazivanje trenutnog vremena. 07:06:05
%% Doslovni karakter '%'. %


ValueError u strptime()

Ako se string (prvi argument) i kod formata (drugi argument) prosljeđeni strptime() ne podudaraju, dobićete ValueError. Pogledajmo 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, dobićete sljedeću grešku.

ValueError: time data '12/11/2018' does not match format '%d %m %Y'