Prijeđi na sadržaj

ISO 8601

Izvor: Wikipedija
Prikazivanje datuma i vremena prema ISO 8601
Datum 2024-11-22
Datum i vrijeme po UTC-u 2024-11-22T02:01:22+00:00
2024-11-22T02:01:22Z
20241122T020122Z
Tjedan 2024-W47
Tjedan i dan u tjednu 2024-W47-5
Datum bez godine --11-22
Dan u godini 327

ISO 8601 je međunarodni standard koji sadržava preporuke za brojevne formate datuma i vremena. Međunarodna organizacija za standardizaciju (ISO) izdala je prvu inačicu standarda 1988. godine, pod naslovom Data elements and interchange formats – Information interchange – Representation of dates and times (Elementi podataka i formati razmjene - Razmjena informacija - Predstavljanje datumâ i vremenâ). Cilj standarda je osiguranje jednoznačne i pouzdane metode u predstavljanju oblika datuma i vremena, kako bi se izbjeglo pogrešno predstavljanje brojevnih oblika datuma i vremena koji se javljaju u komunikaciji među državama koje imaju različito definirane konvencije predstavljanja.

ISO 8601 se primjenjuje za predstavljanje i format datuma u gregorijanskom kalendaru, za vremena u 24-satnom sustavu, vremenskih intervala i njihovo kombiniranje. Standard elementima datuma i vremena ne dodaje posebno značenje, već će značenje ovisiti o kontekstu. Također, elementi ne mogu sadržavati riječi koje nemaju posebno brojevno značenje definirano standardom (na primjer hrvatski nazivi mjeseca) niti elemente koji nisu tekstualni (na primjer slike ili zvuci).

Elementi su aranžirani tako da je slijeva najveći element (godina), a zatim nadesno sljedeći manji elementi. U predstavljanju se mogu koristiti samo kombinacije arapskih brojeva i posebnih znakova koji su definirani standardom (kao što su npr. "-", ":", "T", "W", "Z"). Dodavanje riječi kao što su January ili Thursday nije dozvoljeno u razmjeni podataka.

Povijest

[uredi | uredi kôd]

Prvo izdanje standarda ISO 8601 objavljeno je 1988. godine kao ISO 8601:1988. Objedinilo je i zamijenilo više dotadašnjih ISO standarda koji su regulirali zapisivanje datuma i vremena: ISO 2014, ISO 2015, ISO 2711, ISO 3307 i ISO 4031. Za prvim je slijedilo drugo izdanje ISO 8601:2000, treće ISO 8601:2004 i četvrto izdano u veljači 2019. godine u dva dijela, ISO 8601-1:2019 (osnovni) i ISO 8601-2:2019 (proširenje). Standard izrađuje i objavljuje ISO Tehnički komitet ISO/TC 154 koji je nadležan za procese, elemente podataka i dokumente u trgovini, industriji i administraciji.

ISO 2014 je bio prvi standard koji je uveo predstavljanje datuma i vremena samo brojevima i nizanje po težini slijeva udesno. Brojeve tjedna uveo je standard ISO 2015, a standard ISO 2711 je definirao identifikaciju dana kao broj dana u godini.

Opće značajke

[uredi | uredi kôd]
  • Vrijednosti datuma i vremena poredani su od najvećih do najmanjih vremenskih jedinica: godina, mjesec (ili tjedan), dan, sat, minuta, sekunda te dijelovi sekunde. Time leksikografski poredak odgovara kronološkom poretku, osim kod zapisa negativnih godina, te omogućava prirodno sortiranje.
  • Svaka vrijednost ima točno utvrđen broj znamenaka te se brojevi po potrebi dopunjavaju vodećim nulama.
  • Predstavljanje može biti u osnovnom formatu kad se separatori svode na minimum, ili u proširenom formatu sa separatorima koji je čitljiviji za ljude. Standard navodi da u običnom tekstu treba izbjegavati osnovni format. Separator između elemenata datuma je spojnica, a između elemenata vremena je dvotočje. Na primjer, 26. ožujka 2019. godine može se napisati u osnovnom formatu kao "20190326" ili u proširenom kao "2019-03-26".
  • Za kraće predstavljanje mogu se ukloniti bilo koje vrijednosti, ali polazeći od najmanjih vrijednosti zdesna. Na primjer, "2004-05" je ispravan zapis po ISO 8601 i označava svibanj (peti mjesec) 2004. godine i nikad se neće pogrešno protumačiti kao peti dan u (nepoznatom) mjesecu ili kao razdoblje između 2004. i 2005. godine.
  • Po potrebi za određenu primjenu, standard je predvidio decimale za najmanju vremensku jedinicu. (Ovdje se ne radi o dijelovima sekunde, već najmanjoj zapisanoj jedinici, na primjer, radoblje od pola godine "P0,5Y").

Datumi

[uredi | uredi kôd]

ISO 8601 koristi gregorijanski kalendar, koji je međunarodni standard za civilnu upotrebu.

Standard fiksira datum kalendara na 20. svibnja 1785. godine, datum na koji je u Parizu potpisana metarska konvencija. Datumi prije konvencije kompatibilni su s kalendarom unatrag do službenog uvođenja gregorijanskog kalendara u upotrebu 15. listopada 1582. godine, a za datume prije uvođenja može se koristiti proleptički gregorijanski kalendar, uz dogovor korespondenata.

Godina

[uredi | uredi kôd]
GGGG
±GGGGG

Da bi se izbjegao problem 2000. godine, standard propisuje minimum od četiri znamenke [GGGG] za predstavljanje godine. Na taj se način predstavljaju godine od 0000. do 9999., gdje 0000. godina predstavlja 1. godinu prije Krista a ostale su poslije Krista. Međutim, godine do 1583. nisu automatski dopuštene standardom. Godine u opsegu od [0000] do [1582] mogu se koristiti samo uz pristanak sudionika u razmjeni informacija.

Za predstavljanje godina prije 0000. i nakon 9999. standard dopušta proširenje notacije, ali uz prethodni dogovor sudionika. Za proširenu notaciju [±GGGGG] sudionici dogovaraju dodatni broj znamenaka godine, a oznaci mora prethoditi znak "+" ili "-". Po konvenciji, 1. godina pr. Kr. označena je kao +0000, 2. pr. Kr. je -0001 itd.

Kalendarski datum

[uredi | uredi kôd]
GGGG-MM-DD ili GGGGMMDD
GGGG-MM (ali ne GGGGMM)
--MM-DD ili --MMDD

Predstavljanje kalendarskih datuma prikazano je u desnom okviru. [GGGG] označava četveroznamenkastu godinu, od 0000 do 9999. [MM] označava dvoznamenkasti mjesec u godini, od 01 do 12. [DD] označava dvoznamenkasti dan tog mjeseca, od 01 do 31. Na primjer, "5. travnja 1981." može se predstaviti ili kao "1981-04-05" u proširenom, ili kao "19810405" u osnovnom formatu.

Standard dopušta pisanje datuma sa smanjenom točnošću. Na primjer, može se napisati "1981-04" u značenju "travanj 1981. godine". Ako se dan u mjesecu izostavlja, dopušten je samo oblik GGGG-MM. Nije dopušteno predstavljanje u obliku GGGGMM, da bi se izbjeglo tumačenje datuma napisanog kao GGMMDD.

Broj tjedna

[uredi | uredi kôd]
GGGG-Wtt ili GGGGWtt
GGGG-Wtt-D ili GGGGWttD

U desnom okviru predstavljeno je prikazivanje broja tjedna i dana u tjednu. U ovom slučaju [GGGG] predstavlja godinu u kojoj se tjedan nalazi (ISO week-numbering year, ili neformalno ISO year - ISO godina), koja se može razlikovati od stvarne godine u gregorijanskom kalendaru (objašnjeno u nastavku). [Wtt] predstavlja broj tjedna kome uvijek prethodi slovo "W", od W01 do W52. [D] je redni broj dana u tjednu, od 1 za ponedjeljak do 7 za nedjelju.

Za tjedan 01 postoji nekoliko međusobno ekvivalentnih i kompatibilnih opisa:

  • tjedan u kojem je prvi četvrtak u godini (službena ISO definicija)
  • tjedan u kojem je 4. siječnja
  • tjedan u kome je većina dana (četiri ili više) na početku godine
  • tjedan koji počinje ponedjeljkom u razdoblju između 29. prosinca i 4. siječnja.

To znači, ako je 1. siječnja u ponedjeljak, utorak, srijedu ili četvrtak, on je u tjednu 01. Ako je 1. siječnja u petak, subotu ili nedjelju, on je u 52. ili 53. tjednu prethodne godine (ne postoji tjedan 00). Datum 28. prosinca uvijek je u posljednjem tjednu godine.

ISO godina može imati 52 ili 53 puna tjedna, odnosno 364 ili 371 dan, za razliku od gregorijanskog kalendara koji ima 365 ili 366 dana. Tjedan na kraju kalendarske godine ne prekida se, već nastavlja u novoj kalendaraskoj godini. Prema gornjim opisima određuje se kojoj godini pripada tjedan, odnosno pripada godini u kojoj je većina dana tjedna. Na primjer, 1. siječnja 2016. pripadao je 53. tjednu 2015. jer je prvi četvrtak bio 7. siječnja 2016. i u tom slučaju bi predstavljanje bilo 2015-W53; isto tako, 31. prosinca 2014. bio je u prvom tjednu 2015. godine te bi se pisalo 2015-W01.

Dan u godini

[uredi | uredi kôd]
GGGG-DDD ili GGGGDDD

Redni broj dana u godini predstavljen je četveroznamenkastom oznakom godine [GGGG] i troznamenkastom oznakom dana [DDD]. Raspon broja dana je od 001 do 365 (ili 366 za prijestupnu godinu). Za jedno- i dvoznamenkaste brojeve dana pišu se vodeće nule. Na primjer, 1981-04-05 može se napisati kao 1981-095.

Vrijeme

[uredi | uredi kôd]
hh:mm:ss,sss ili hhmmss,sss
hh:mm:ss ili hhmmss
hh:mm ili hhmm
hh

ISO 8601 koristi 24-satni sustav. Osnovni format je [hh][mm][ss] a prošireni [hh]:[mm]:[ss]. [hh] označava sate s vodećom nulom, od 00 do 24 (gdje se 24 koristi samo kao oznaka ponoći na kraju kalendarskog dana). [mm] su minute u satu s vodećom nulom, od 00 do 59. [ss] označava sekunde s vodećom nulom, od 00 do 60 (60 se koristi samo da označi dodanu prijestupnu sekundu pri korekciji vremena na kraju godine, npr. 31. prosinca 2016. nakon 23:59:59 dodana je sekunda 23:59:60).

Sekunde ili minute i sekunde mogu se izostaviti iz osnovnog ili proširenog formata, čime se smanjuje točnost, ali povećava čitljivost: [hh]:[mm], [hh][mm] ili [hh].

Ponoć je poseban slučaj koji se može predstaviti kao "00:00" ili "24:00". Oblik "00:00" se koristi na početku, a "24:00" na kraju kalendarskog dana. Tako na primjer oblici 2007-04-05T24:00 i 2007-04-06T00:00 predstavljaju isti trenutak.

Na bilo koji element vremena može se dodati decimala, ali samo ako je posljednji u nizu. Iako decimalna oznaka može biti točka ili zarez, standard ISO 8601:2004 preporučuje zarez kao separator između vremena i decimale. Na primjer, "14 sati i 30 i pô minute" može se zapisati kao "14:30,5", "1430,5", "14:30.5" ili "1430.5". Broj znamenaka decimale nije ograničen, ali se sudionici trebaju o tome dogovoriti. Na primjer, kod Microsoftovog SQL servera preciznost je tri decimale, tj. hh:mm:ss[.mmm].

Vremenske zone

[uredi | uredi kôd]
<vrijeme>Z
<vrijeme>±hh:mm
<vrijeme>±hhmm
<vrijeme>±hh

Vremenske zone u ISO 8601 predstavljaju se kao lokalno vrijeme (ne navodeći lokaciju), kao UTC ili kao razlika od UTC-a.

Ako nije navedena informacija o odnosu prema UTC-u, podrazumijeva se lokalno vrijeme. Ta pretpostavka može biti sigurna pri komunikaciji u istoj vremenskoj zoni, ali najčešće nije, te je bolje navesti oznaku vremenske zone.

Koordinirano svjetsko vrijeme (UTC)

[uredi | uredi kôd]

Ako je vrijeme po UTC-u, neposredno uz vrijeme bez razmaka se navodi oznaka "Z". "Z" označava da nema razlike u odnosu na UTC. Na primjer, vrijeme "09:30 UTC" može se zapisati kao "09:30Z" ili "0930Z", a "14:45:15 UTC" kao "14:45:15Z" ili "144515Z".

Slovo "Z" iz ISO 8601 odgovara vremenskoj zoni "Z", početnoj ili nultoj zoni po takozvanim "nautičkim" vremenskim zonama baziranim na GMT-u, od koje su zone označene slovima A-M (osim J) na istok (+1h do +12h) i N-Y (-1h do -12h) na zapad (zone M i Y imaju isto vrijeme s razlikom od 24h).

Razlike u odnosu na UTC

[uredi | uredi kôd]

Razlika u odnosu na UTC dodaje se, kao i "Z" u gornjem slučaju, neposredno uz vrijeme u obliku ±[hh]:[mm], ±[hh][mm] ili ±[hh]. Tako da će vrijeme koje je jedan sat ispred UTC-a, kao što je u Hrvatskoj u zimskom računanju vremena (UTC+1, zona A), imati oznaku zone "+01:00", "+0100" ili "+01". Vrijeme koje je iza UTC-a imat će negativnu oznaku, na primjer Portugal kasni jedan sat za UTC-om te će imati oznaku vremenske zone "-01:00", "-0100" ili "-01". Za predstavljanje negativnih vrijednosti ISO 8601 propisuje korištenje spojnice ili znaka minus.

Ovi zapisi predstavljaju isto vrijeme: "18:30Z", "22:30+04", "1130−0700", "15:00−03:30". Nautičke oznake zona (spomenute gore) ne koriste se, osim oznake "Z". Da bi se dobilo UTC vrijeme, od predstavljenog vremena treba oduzeti razliku, na primjer, iz "15:00−03:30" operacijom 15:00 − (−03:30) dobiva se 18:30 UTC.

Iako razlika nula ima posebnu oznaku "Z", ona se također može iskazati brojkama kao "+00:00", "+0000" ili "+00", ali nije dopušten negativan broj ("−00:00", "−0000" ili "−00").

Kombinirano predstavljanje datuma i vremena

[uredi | uredi kôd]
<datum>T<vrijeme>

Neka točka u vremenu može se predstaviti spajanjem izraza za datum i izraza za vrijeme između kojih je separator slovo "T". Na primjer, "2007-04-05T14:30".

Ako treba staviti i oznaku vremenske zone, ona se stavlja na kraj niza. Na primjer, "2007-04-05T14:30Z" ili "2007-04-05T12:30-02:00".

Može se koristiti osnovna ili proširene forma, ali mora biti ista u obje grupe. Datumska grupa može biti datum, tjedan ili dan u godini u kompletnom obliku. Vremenska grupa može biti u formatu sa smanjenom točnošću. Dopušteno je da se izostavi separator "T" ako se sudionici o tome dogovore.

Trajanje

[uredi | uredi kôd]
PnYnMnDTnHnMnS
PnW
P<datum>T<vrijeme>

Trajanje je količina vremena u nekom vremenskom intervalu i predstavlja se u formatu P[n]Y[n]M[n]DT[n]H[n]M[n]S ili P[n]W, kao što je prikazano u desnom okviru. U predstavljanju je [n] odgovarajuća vrijednost elementa koji slijedi iza [n]. Vodeće nule nisu potrebne, a najveći broj znamenaka dogovaraju sudionici u komunikaciji. Element datuma i vremena koji se dodaje na vrijednost označava se velikim slovom koje ostaje u izvornom obliku, a značenje slova je:

  • P (period) je oznaka na početku niza koja označava da niz predstavlja trajanje.
  • Y (year) je oznaka koja slijedi iza vrijednosti broja godina.
  • M (month) je oznaka koja slijedi iza vrijednosti broja mjeseci.
  • W (week) je oznaka koja slijedi iza vrijednosti broja tjedana.
  • D (day) je oznaka koja slijedi iza vrijednosti broja dana.
  • T je separator koji prethodi vremenskoj grupi kao i kod kombiniranog predstavljanja datuma i vremena.
  • H (hour) je oznaka koja slijedi iza vrijednosti broja sati.
  • M (minute) je oznaka koja slijedi iza vrijednosti broja minuta.
  • S (second) je oznaka koja slijedi iza vrijednosti broja sekundi.

Na primjer, "P3Y6M4DT12H30M5S" predstavlja trajanje "tri godine, šest mjeseci, četiri dana, dvanaest sati, trideset minuta i pet sekundi."

Ako je vrijednost nekog elementa nula, taj se podatak može izostaviti (skupa s oznakom), a mogu se također izostaviti kraći elementi za smanjenu preciznost. Na primjer, izrazi "P23DT23H" i "P4Y" su prihvatljivo predstavljanje trajanja. Međutim, najmanje jedan element mora se nalaziti u nizu, samo "P" nije dopušteno za trajanje 0 sekundi. Ali je u tom slučaju dopušteno navođenje bilo kog elementa, na primjer, i "PT0S" i "P0D" su ispravni izrazi i predstavljaju isto trajanje.

Zbog separatora "T" ne može se javiti nedoumica u izrazima koji sadržavaju oznaku "M" - na primjer, "P1M" je trajanje od jednog mjeseca, a "PT1M" trajanje od jedne minute. Najmanji predstavljeni element može imati decimalni dio, kao na primjer "P0,5Y" kojim je predstavljeno pola godine. Decimalni dio može se označiti zarezom ili točkom, kao u primjeru "P0,5Y" ili "P0.5Y". Standard ne brani "prekoračenje" vrijednosti elementa (osim u dolje spomenutom slučaju). Tako se, na primjer, isto trajanje može predstaviti s "prekoračenjem" "PT36H" ili kao "P1DT12H".

Alternativno, sudionici mogu dogovorii da trajanje predstave u osnovnom obliku PGGGGMMDDThhmmss ili proširenom P[GGGG]-[MM]-[DD]T[hh]:[mm]:[ss], ali u takvom predstavljanju elementi ne smiju prekoračiti svoj modulo (tj. nedopustive su npr. vrijednosti 13 za mjesece ili 25 za sate).

Iako standard opisuje trajanje kao dio vremenskog intervala, format trajanja se koristi neovisno o formatu vremenskih intervala.

Vremenski intervali

[uredi | uredi kôd]
<početak>/<kraj>
<početak>/<trajanje>
<trajanje>/<kraj>
<trajanje>

Vremenski interval je vrijeme izmađu dvije vremenske točke. Količina vremena predstavljena je trajanjem (kao što je opisano u prethodnom poglavlju). Dvije vremenske točke (početak i kraj) predstavljaju se kombinacijom datuma i vremena ili samo datumom.

Vremenski interval može se predstaviti na četiri načina:

  • početak i kraj, na primjer "2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
  • početak i trajanje, na primjer "2007-03-01T13:00:00Z/P1Y2M10DT2H30M"
  • trajanje i kraj, na primjer "P1Y2M10DT2H30M/2008-05-11T15:30:00Z"
  • samo trajanje, na primjer "P1Y2M10DT2H30M", ali s dodatnim kontekstnim informacijama.

U prva tri načina kao separator koristi se kosa crta ("/"). Standard dopušta da se kosa crta može zamijeniti dvjema spojnicama, na primjer "2000--2002". Time je omogućeno da se vremenski intervali mogu javiti u nazivima računalnih datoteka, jer je u većini operativnih sustava kosa crta rezervirani znak.

Ako u izrazima <početak>/<kraj> nedostaje neki element na kraju, podrazumijeva se da je isti kao u početku, uključujući i vremensku zonu. Na taj način standard dopušta sažetije predstavljanje intervala. Na primjer, datum dvosatnog sastanka s početnim i završnim vremenom može se jednostavno napisati kao "2007-12-14T13:30/15:30", gdje "/15:30" podrazumijeva isti datum "/2007-12-14T15:30", ili datum mjesečne naplate kao "2008-02-15/03-14", gdje "/03-14" podrazumijeva istu godinu "/2008-03-14".

Ako se želi povećati preciznost, može se dodati još elemenata. Na primjer, interval "2007-11-13/15" može početi u bilo koje vrijeme dana 2007-11-13 i završiti u bilo koje vrijeme dana 2007-11-15, dok "2007-11-13T09:00/15T17:00" uključuje početno i završno vrijeme. Za izričito uključivanje cijelog početnog i krajnjeg datuma interval treba predstaviti kao "2007-11-13T00:00/15T24:00".

Ponavljanje intervala

[uredi | uredi kôd]
Rnn<interval>
R/<interval>

Ispred intervala koji se ponavlja stavlja se oznaka "R[n]/", gdje je "R" slovo koje se ne mijenja, a [n] predstavlja broj ponavljanja. Izostavljanje broja ponavljanja [n] znači da broj ponavljanja nije ograničen. Na primjer, interval "P1Y2M10DT2H30M" koji se ponavlja pet puta s početkom u "2008-03-01T13:00:00Z" predstavlja se kao "R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M" (interval je predstavljen kao <početak>/<trajanje>).

Uporaba

[uredi | uredi kôd]

Na Internetu organizacija W3C koristi ISO 8601 za definiranje svog profila standarda, odnosno restrikcijom formata datuma i vremena na manji broj smanjuje mogućnost greške i kompleksnost softvera.

Mnoge specifikacije referenciraju ISO 8601, ali ne koriste uvijek sve opcije standarda. Na primjer, mnogi standardi za televizijske programske vodiče (EPG) koriste različite formate za prikazivanje vremena i trajanja programa.

Broj tjedna po standardu ISO 8601 se od 2006. godine u SAD-u koristi na ambalaži mnogih komercijalnih proizvoda (pakiranje, limenke, boce) čime se olakšava osiguranje kvalitete, jer se greške u proizvodu mogu lako pratiti do tjedna kad je izrađen i locirati čitave serije.

Izvori

[uredi | uredi kôd]