Python - datetime


Python ima modul pod nazivom datetime za rad s datumima i vremenom. U ovoj lekciji ćemo uraditi nekoliko jednostavnih programa koji se odnose na datum i vrijeme prije nego što dublje krenemo da pričano o ovoj temi.


Primjer 1: Dobijanje trenutnog datum i vrijeme

import datetime

datetime_object = datetime.datetime.now()
print(datetime_object)

Ovdje smo uvezli datetime modul koristeći import datetime izraz. Jedna od klasa definisanih u modulu datetime je klasa datetime. Zatim smo koristili metodu now() za kreiranje objekta datetime koji sadrži trenutno lokalno vrijeme i datum.


Primjer 2: Dobijanje trenutnog datum

import datetime

date_object = datetime.date.today()
print(date_object)

U ovome smo programu koristili metodu today() definisanu u klasi date kako bismo dobili objekt date koji sadrži trenutni lokalni datum. Uobičajeno korištene klase u modulu datetime su:

  • date Class
  • time Class
  • datetime Class
  • timedelta Class


datetime.date Class

Možete stvoriti instance date objekata iz date klase. Objekt datuma predstavlja datum (godinu, mjesec i dan).


Primjer 3: Objekt Date za predstavljanje datuma

import datetime

d = datetime.date(2021, 9, 28)
print(d)

Ako se pitate o čemu se radi, hajde da razjasnimo. date() u gornjem primjeru je konstruktor date klase. Konstruktor uzima tri argumenta: godinu, mjesec i dan. Varijabla a je date objekat. Klasu možemo uvesti samo iz datetime modula. Pogledajmo kako:

from datetime import date

a = date(2021, 9, 28)
print(a)

Primjer 4: Dobijanje trenutnog datuma

Objekt date koji sadrži trenutni datum možete stvoriti pomoću metode klase po imenu today(). Pogledajmo kako:

from datetime import date

today = date.today()

print("Tačan datum je:  =", today)

Primjer 5: Dobijanje datum iz vremenske oznake

Također možemo stvarati date objekte iz vremenske oznake. Unix vremenska oznaka je broj sekundi između određenog datuma i 1. januara 1970. po UTC-u. Vremensku oznaku možete pretvoriti u datum pomoću metode fromtimestamp().

from datetime import date

timestamp = date.fromtimestamp(1326244364)
print("Datum je =", timestamp)

Primjer 6: Ispisivanje današnje godine, mjeseca i dan

Iz objekta date lako možemo dobiti godinu, mjesec, dan, dan u sedmici itd. Pogledajmo kako:

from datetime import date

# date objekt današnjeg datuma
today = date.today() 

print("Trenutna godina: ", today.year)
print("Trenutni mjesec: ", today.month)
print("Trenutni dan: ", today.day)


datetime.time

Vremenski objekt izveden iz time klase predstavlja lokalno vrijeme.


Primjer 7: Vremenski objekt za predstavljanje vremena

from datetime import time

# Vrijem (sati= 0, minute = 0, sekunde = 0)
a = time()
print("a =", a)

# Vrijeme (sati, minute i sekunde)
b = time(11, 34, 56)
print("b =", b)

# Vrijeme (sati, minute i sekunde)
c = time(sati = 11, minuta = 34, sekudi = 56)
print("c =", c)

# Vrijeme (sati, minute, sekunde, milisekunde)
d = time(11, 34, 56, 234566)
print("d =", d)

Primjer 8: Ispisivanje sati, minuta, sekundi i milisekundi

Nakon što kreirate time objekt, možete lako ispisati njegove atribute, kao što su sati, minute itd. Pogledajmo kako:

from datetime import time

a = time(11, 34, 56)

print("Sati=", a.hour)
print("Minute=", a.minute)
print("Sekunde=", a.second)
print("Milisekunde=", a.microsecond)


datetime.datetime

Modul datetime ima klase po imenu dateclass koje mogu da sadrže informacije iz oba objekta i date i time.


Primjer 9: Python objekat datetime

from datetime import datetime

#datetime (godina, mjesec, dan)
a = datetime(2021, 09, 28)
print(a)

# datetime (godina, mjesec, dan, sat, minute, sekunde, milisekunde)
b = datetime(2017, 11, 28, 23, 55, 59, 342380)
print(b)

Prva tri argumenta godina, mjesec i dan u datetime() konstruktoru su obavezni.


Primjer 10: Ispis godine, mjeseca, sata, minute i vremenske oznake

from datetime import datetime

a = datetime(2021, 09, 28, 23, 55, 59, 342380)
print("Godina= ", a.year)
print("Mjesec= ", a.month)
print("Sat= ", a.hour)
print("Minuta= ", a.minute)
print("Vremenska oznaka= ", a.timestamp())


datetime.timedelta

Objekat timedelta predstavlja razliku između dva datuma ili vremena.


Primjer 11: Razlika između dva datuma i vremena

from datetime import datetime, date

t1 = date(year = 2018, month = 7, day = 12)
t2 = date(year = 2017, month = 12, day = 23)
t3 = t1 - t2
print("t3 =", t3)

t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33)
t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13)
t6 = t4 - t5
print("t6 =", t6)

print("Tip od t3 =", type(t3)) 
print("Tip od t6 =", type(t6))

Oba primjera su su </class 'datetime.timedelta'> tipa.


Primjer 12: Razlika između dva vremenska objekta

from datetime import timedelta

t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33)
t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54)
t3 = t1 - t2

print("t3 =", t3)

Ovdje smo stvorili dva timedelta objekta t1 i t2, a njihova razlika je ispisana na ekranu.


Primjer 13: Ispis negativnog timedelta objekta

from datetime import timedelta

t1 = timedelta(seconds = 33)
t2 = timedelta(seconds = 54)
t3 = t1 - t2

print("t3 =", t3)
print("t3 =", abs(t3))

Primjer 14: Trajanje vremena u sekundama

Možete dobiti ukupan broj sekundi u timedelta objektu pomoću metode total_seconds().

from datetime import timedelta

t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("Ukupno sekundi =", t.total_seconds())

Zbir dva datuma i vremena možete pronaći i pomoću + operatora. Takođe objekt možete pomnožiti i podijeliti timedelta cijelim i decimalnim brojevima.



Datum i vrijeme u Python formatu

Način predstavljanja datuma i vremena može biti različit na različitim mjestima, u organizacijama itd. Uobičajeniji je za upotrebu mm/dd/yyyyu u SAD-u, dok dd/mm/yyyy je češći upotrebljavan u Evropi. Python ima metode strftime() i strptime() za rješavanje ovoga. Metoda strftime() je definisana pod klase date, datetime i time. Metoda stvara formatirani string iz date, datetime i time objekta.


Primjer 15: Formatirajte datum pomoću strftime() metode

from datetime import datetime

# Trenutni datum i vrijeme
now = datetime.now()

t = now.strftime("%H:%M:%S")
print("time:", t)

s1 = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("s1:", s1)

s2 = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("s2:", s2)

Primjer 16: strptime() metoda

from datetime import datetime

date_string = "28 September, 2021"
print("date_string =", date_string)

date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)