ISO 8601 on kansainvälinen standardi, jonka tarkoituksena on kuvata päivämääriä ja kellonaikoja tietokoneiden ja ihmisten kannalta yksiselitteisellä, helposti käsiteltävällä tavalla. Standardi määrittelee useita vaihtoehtoja, mutta perusperiaate on yksinkertainen: suurimmat yksiköt (vuosi) kirjoitetaan ensin ja pienemmät viimeiseksi, eli järjestys on VUOSI-KUUKAUSI-PÄIVÄ.
Tämä järjestys tekee merkkijonojen aakkosjärjestyksestä suoraan aikajärjestyksen, mikä helpottaa lajittelua tiedostoissa, tietokannoissa ja lokitiedoissa.
Yleisimmin käytetyt muodot
- Peruspäivämäärä (laajennettu muoto): 2020-05-23 (YYYY-MM-DD). Tästä esimerkkinä artikkelin päivämäärä: 2020-05-23.
- Peruspäivämäärä (perusmuoto eli ilman erottimia): 20200523 (YYYYMMDD).
- Aika (laajennettu muoto): 19:29 tai 19:29:00 (hh:mm tai hh:mm:ss). Esimerkiksi: ISO-perusaika on 19:29.
- Yhdistetty päivämäärä ja aika: 2020-05-23T19:29:00. Kirjain T erottaa päivämäärän ja kellonajan.
- Ajassa ilmoitettu aikavyöhyke: 2020-05-23T19:29:00Z (UTC) tai 2020-05-23T19:29:00+02:00 (paikallinen aika suhteessa UTC:hen).
- Viikkopäivämäärä: 2020-W21-6 tai 2020W216 (vuosi + viikko + viikonpäivä, viikot alkavat maanantaista).
- Järjestysnumero (ordinal date): 2020-144 (144. päivä vuodesta 2020).
Aikavyöhyke ja UTC
ISO 8601 sallii aikavyöhykkeiden ilmaisun joko kirjaimella Z (Zulu, sama kuin UTC) tai muodossa ±hh:mm. Esimerkkejä:
- 2020-05-23T19:29:00Z (UTC)
- 2020-05-23T21:29:00+02:00 (kellonaika, joka on kaksi tuntia UTC:n edellä)
Laajempia ominaisuuksia
- Kestoja (durations): Muoto alkaa P-kirjaimella: PnYnMnDTnHnMnS. Esim. P3Y6M4DT12H30M5S = 3 vuotta, 6 kuukautta, 4 päivää, 12 tuntia, 30 minuuttia ja 5 sekuntia.
- Ajanjaksot (intervals): Ajanjakso esitetään erottimella /. Esim. 2007-03-01/2008-05-11 tai 2020-05-23T19:29:00Z/2020-05-24T19:29:00Z.
- Toistuvat jaksot: Toisto voidaan merkitä R-alkuisesti, esim. R10/2008-03-01T13:00:00Z/P1D (10 kertaa päivittäin alk. annetusta ajasta).
- Perus- vs. laajennettu muoto: Perusmuoto (ilman väliviivoja ja kaksoispisteitä) on tiiviimpi konekäyttöön; laajennettu muoto on luettavampi ihmiselle.
Hyödyt ja käytännön suosituksia
- ISO 8601 vähentää epäselvyyksiä eri maiden päiväyskäytännöissä (esim. 03/04/2020 voi tarkoittaa 3. huhtikuuta tai 4. maaliskuuta).
- Suositeltavaa käyttää yhdistettyä, aikavyöhykkeellisenä ilmoitettua muotoa tiedonsiirrossa ja lokituksessa: esim.
2020-05-23T19:29:00+02:00. - Tiedostonimissä ja tunnisteissa ilman erottimia oleva perusmuoto
YYYYMMDDon kätevä: esim. raportti_20200523.txt. - Viikkopäiväformaatti (WW) on hyödyllinen raportoinneissa, joissa viikot ovat oleellinen yksikkö.
Rajoitukset ja huomioitavaa
- Ihmiset harvoin käyttävät ISO 8601 -muotoa arkipäiväisessä käsin kirjoittamisessa; esimerkiksi Suomessa yleinen muoto on dd.mm.yyyy.
- Vaikka ISO 8601 tarjoaa useita vaihtoehtoja, on hyvä sopia järjestelmässä tai organisaatiossa yhdet käytännöt (esim. aina laajennettu muoto aikavyöhykkeellä).
- Leap second (liitettäviä sekunteja) käsitellään erikoistilanteena; useimmat järjestelmät eivät käytännössä noudata niitä käsittelyssä, joten varmistakaa vaatimukset.
Yhteenvetona: ISO 8601 tekee päivämäärien ja aikojen käsittelystä ennustettavaa ja yksiselitteistä etenkin tietojärjestelmissä. Se ei aina korvaa paikallista tapaa kirjoittaa päivämääriä ihmisten kesken, mutta on erittäin hyödyllinen tiedonvaihdossa, arkistoinnissa ja ohjelmoinnissa.
Esimerkki, joka yhdistää alkuperäiset tekstin esimerkit: 2020-05-23T19:29:00+02:00 on sama kellonaika kuin artikkelin mainitsema peruspäivämäärä 2020-05-23 ja perusaika 19:29, mutta täsmällisesti myös aikavyöhykkeeseen sidottu.