Python: osnovni tipovi podataka datuma i vremena
module datetime(službena dokumentacija) definira osnovne tipove podataka datuma i vremena-
datetime.datesadrži datumdatetime.date(1997, 4, 21)vraćadatekoji sadrži vremenski trenutak dana 21. travnja 1997.datetime.date.today()vraća trenutni datum tipadate- moguća usporedba dva datuma, npr.
datetime.date(1998, 4, 21) > datetime.date(1997, 4, 21)daje rezultatTrue -
razlika dva datuma je
timedeltaimport datetime datum1 = datetime.date(1997, 4, 21) datum2 = datetime.date(1998, 4, 21) razlika = datum2 - datum1 # bit će točno 365 dana
-
datetime.datetimesadrži datum i vrijemedatetime.datetime(1997, 4, 21, 12, 35, 41)vraćadatetimekoji sadrži vremenski trenutak dana 21. travnja 1997. u 12:35:41 satidatetime.datetime.now()vraća trenutni datum i vrijeme tipadatetime- moguća usporedba dva datuma, npr.
datetime.datetime(1998, 4, 21, 12, 35, 41) < datetime.datetime(1997, 4, 21, 12, 35, 41)daje rezultatFalse -
razlika dva datuma i vremena je
timedeltaimport datetime datumvrijeme1 = datetime.datetime(1997, 4, 21, 12, 35, 41) datumvrijeme2 = datetime.datetime(1998, 4, 21, 12, 35, 41) razlika = datumvrijeme2 - datumvrijeme1 # bit će točno 365 dana
-
datetime.timesadrži vrijeme -
datetime.timedeltaje trajanje vremena, rezultat razlike dva vremenska trenutka (date,time,datetime)- interno izražen u danima, sekundama i mikrosekundama, ali može se zapisati u jedincama po želji
- omogućuje brojne aritmetičke operacije: zbrajanje, oduzimanje, množenje i dijeljenje cijelim brojem i brojem s pomičnim zarezom, modulo dijeljenje i druge (detaljnije)
Zadatak
Odredite koliko je dana prošlo od 1. siječnja 1970.
Zadatak
Neki od operacijskih sustava sličnih Unixu vrijeme spremaju kao 32-bitni cijeli broj pa će 19. siječnja 2038. u 03:14:07 po koordiniranom svjetskom vremenu doživjeti prelijevanje vrijednosti vremena (tzv. Year 2038 problem). Odredite koliko još vremena (u sekundama) imamo do tada.
-
datetime.tzinfoidatetime.timezonesluže klasamadatetimeitimeza pohranu informacija o vremenskoj zoni kao što je odstupanje lokalnog vremena od koordiniranog svjetskog vremena (Coordinated Universal Time, UTC)datetime.timezone.utcje vremenska zona UTC-a-
naša vremenska zona srednjoeuropsko vrijeme (Central European Time, CET) i srednjoeuropsko ljetno vrijeme (Central European Summer Time, CEST) zimi ima odmak +1 sat od UTC-a, a ljeti +2 sata; kako su odmaci ovdje
timedelta, te vremenske zone konstruirat ćemo kaodatetime.timezone(datetime.timedelta(hours=1))idatetime.timezone(datetime.timedelta(hours=2))import datetime datumvrijeme1 = datetime.datetime(1997, 4, 21, 12, 35, 41, tzinfo=datetime.timezone.utc) datumvrijeme2 = datetime.datetime(1997, 4, 21, 14, 35, 41, tzinfo=datetime.timezone(datetime.timedelta(hours=1))) razlika = datumvrijeme2 - datumvrijeme1 # bit će 3600 sekundi, odnosno 1 sat -
bazu vremenskih zona održava IANA
Zadatak
Napišite program koji korisnika traži unos odmaka dvaju vremenskih zona između kojih će se vršiti pretvorba vremena. Korisnik unosi datum i vrijeme tako da redom unosi godinu, mjesec, dan, sat, minute i sekunde, a zatim navodi u kojoj od dvije vremenske zone je to vrijeme uneseno. Program pretvara to vrijeme u vrijeme u drugoj vremenskoj zoni. (Uputa: pretvorbu izvršite u dva koraka: prvo oduzmite odmak vremenske zone da dobijete vrijem po UTC-u, a zatim dodajte drugi odmak.)
-
formatiranje datuma i vremena (popis kodova za formatiranje)
date.strftime()omogućuje formatiranje datuma-
datetime.strftime()omogućuje formatiranje datuma i vremenaimport datetime datvr = datetime.datetime(1997, 4, 21, 12, 35, 41) print(datvr.strftime("Dana %d.%m.%Y. u %H sati, %M minuta i %S sekundi")) -
time.strftime()omogućuje formatiranje vremena
-
parsiranje datuma i vremena (popis kodova za parsiranje, isti kao za formatiranje)
date.strptime()omogućuje formatiranje datuma-
datetime.strptime()omogućuje formatiranje datuma i vremenaimport datetime datvr = datetime.datetime.strptime("15/11/19 15:30", "%d/%m/%y %H:%M") print(datvr) # 2019-11-15 15:30:00 -
time.strptime()omogućuje formatiranje vremena
Zadatak
Promijenite rješenje prethodnog zadatka tako da korisnik unosi vremena u obliku 2020-03-26 08:37:54 umjesto pojedinačnih unosa godina, mjeseca, dana, sati, minuta i sekundi (pritom nije potrebno baratati pogrešnim unosima) te da se rezultat pretvorbe ispisuje u obliku Date: 26. March 2020. Time: 08.37.54.
Author: Vedran Miletić