ISO 8601

**ISO 8601** ir starptautisks standarts datuma un laika pierakstam, ko izdevusi Starptautiskā standartu organizācija (*International Organization for Standardization*, *ISO*). Oficiāli standarts ir nosaukts par "*Data elements and interchange formats — Information interchange — Representation of dates and times*" ("Datu elementi un apmaiņas standarti — informācijas apmaiņa - datumu un laika attēlojums"). Galvenā *ISO 8601* standarta īpašība ir datuma un laika pieraksts, kurā vērtības tiek pierakstītas secībā no svarīgākā uz mazsvarīgāko jeb no lielākā (gads) uz mazāko (sekunde).

## Vēsture
Standarta *ISO 8601* pirmā redakcija tika publicēta 1988. gadā. Tā unificēja un aizstāja vairākus vecākus *ISO* datuma un laika pieraksta standartus: *ISO 2014*, *ISO 2015*, *ISO 2711*, *ISO 3307* un *ISO 4031*. 2000. gadā tā tika aizstāta ar otro redakciju, trešā redakcija, *ISO 8601:2004*, tika publicēta 2004-12-03, un pašreizējā, ceturtā, *ISO 8601:2019* — 2019-02.

*ISO 2014* standartā tika ieviests datuma pieraksts [GGGG]-[MM]-[DD]. *ISO* nedēļu numerācija pirmoreiz parādījās *ISO 2015*, un dienu identifikācija pēc kārtas datumiem tika ieviesta *ISO 2711*.

## Galvenie principi
Datuma un laika vērtības tiek organizētas secībā no svarīgākā uz mazāk svarīgāko: gads, mēnesis (vai nedēļa), diena, stunda, minūte, sekunde un sekundes daļa. Katra vērtība tiek pierakstīta ar fiksētu ciparu skaitu; ja paliek brīvās pozīcijas, tās aizpilda ar nullēm.

Pieraksts var tikt veikts vienā no diviem formātiem: pamatformātā ar minimālu atdalītāju skaitu vai paplašinātā formātā ar atdalītājiem, kas uzlabo lasāmību. Standarts pieļauj defises atdalītāju starp datuma vērtībām (gadu, mēnesi, nedēļu un dienu) un kolu kā atdalītāju starp laika vērtībām (stundu, minūti un sekundi). Piemēram, 2009. gada 1. mēneša 6. dienu var pierakstīt kā "2009-01-06" paplašinātajā formātā vai kā "20090106" pamatformātā, kas neveido pārpratumus. Paplašinātie formāti tomēr ir ieteicamāki, jo daži pamatformāti var radīt pārpratumus.

Ar samazinātu precizitāti, jebkuru datuma un laika vērtību var atmest, bet secībā "no mazsvarīgākā uz vairāk svarīgāko". Piemēram, "2009-01" ir pareizs *ISO 8601* datums, kas rāda 2009. gada 1. mēnesi. Ar to nevarēs parādīt 2009. gada 1. dienu kādā no mēnešiem.

Visbeidzot, ja nepieciešama lielāka precizitāte, standarts ļauj pievienot papildu decimālo daļu mazākajai laika vērtībai pierakstā.

## Datumi
Standarts izmanto Gregora kalendāru, ko plaši izmanto pasaulē, un kas ir kļuvis par *de facto* standarta kalendāru dažādās starptautiskajās jomās.

*ISO 8601* par atskaites punktu ir fiksēts Gregora kalendāra datums 1875-05-20 kā datums, kad Parīzē tika noslēgta Metriskā konvencija. Šis atskaites datums ļauj *ISO* datumus konvertēt uz "Hronoloģiskajiem juliāna dienas skaitļiem" (*Chronological Julian Day Numbers*, *CJDN*) aprēķiniem ar datumiem, kur 1875-05-20 atbilst precīzi CJDN 2406029. *ISO* datumi arī pirms Konvencijas ir savietojami līdz pat Gregora kalendāra ieviešanas datumam 1582-10-15.

### Gadi

*ISO 8601* pierakstā minimālā prasība ir četru ciparu gads [GGGG], lai novērstu 2000. gada problēmu.

Lai attēlotu gadus pirms 0. un pēc 9999. gada, standarts ļauj paplašināt gada pierakstu uz [±GGGGG], bet pirms tam vienojoties datuma publicētājam un izmantotājam. Paplašinātajā gada pierakstā papildu ciparu pieliek pirms četru ciparu minimālā gada un obligāti jāpieliek + vai − zīme ar vienošanos, ka 0. gads ir pozitīvs.

### Kalendārie datumi

Kalendāro datumu pieraksta ar gadu, mēnesi un dienu. [GGGG] ir četru ciparu gads, [MM] ir gada divu ciparu mēnesis (no 01 līdz 12), un [DD] rāda mēneša divu ciparu dienu (no 01 līdz 31). Piemēram, 1981. gada 5. aprīli var pierakstīt kā "1981-04-05" paplašinātajā formātā vai "19810405" pamatformātā.

Standarts ļauj datumu pierakstīt arī ar samazinātu precizitāti, atmetot dienu vai mēnesi. Piemēram, "1981-04" nozīmē "1981. gada aprīlis", bet "1981" ir vienkārši gads. Lai gan ir pieļaujami abi formāti — GGGGMMDD un GGGG-MM-DD, tomēr, ja diena [DD] ir izlaista, tad atļauts ir tikai formāts GGGG-MM. Aizliedzot datumu formātā GGGGMM, standarts novērš divdomību, ja kļūdaini tiek izmantots nogrieztais pieraksts GGMMDD (vēl joprojām bieži lietots).

### Nedēļu datumi

*ISO 8601* standartā datumu var pierakstīt arī alternatīvā veidā — ar nedēļas kārtas numuru gadā. Nedēļas datums sastāv no tā saucamā ISO gada [GGGG], nedēļas kārtas numura no diviem cipariem [nn], kuriem priekšā ir burts 'W' ( "nedēļa"). Pēc tam seko nedēļas diena [D], kas sastāv no viena cipara (no 1 līdz 7); nedēļa sākas no pirmdienas, beidzas ar svētdienu.

Nedēļas '01' noteikšanai var izmantot vairākas definīcijas:
* nedēļa, kurā ir gada pirmā ceturtdiena;
* nedēļa, kurā ir 4. janvāris;
* pirmā nedēļa jaunajā gadā, kurā ir dienu vairākums (četras vai vairāk);
* nedēļa, kuras pirmdiena ir periodā no 29. decembra līdz 4. janvārim;
* ja 1. janvāris ir pirmdienā, otrdienā, trešdienā vai ceturtdienā, šī ir nedēļa '01'. Ja 1. janvāris ir piektdienā, sestdienā vai svētdienā, tā ir iepriekšējā gada nedēļa '52' vai '53'.

Nedēļas kārtas numuru var noteikt, saskaitot ceturtdienas no gada sākuma. 

*ISO* gads sākas ar nedēļas '01' pirmo dienu (pirmdienu) un beidzas svētdienā pirms jaunā *ISO* gada (tādējādi novēršot pārklāšanos vai pārrāvumu). Gads sastāv no 52 vai 53 nedēļām. 

Piemēri:
* 2008-12-29 tiek pierakstīts kā "2009-W01-1"
* 2010-01-03 tiek pierakstīts kā "2009-W53-7"

### Kārtas datumi

Trešā datuma pieraksta sistēma ir saucamie "kārtas datumi" (), kas ir ļoti vienkārša, jo komplicētās mēnešu vai nedēļu definīcijas aizstāj ar dienu skaitu no gada sākuma. Tas atvieglo, piemēram, datumu salīdzināšanu dažādos kalendāros. Standarts sastāv no gada [GGGG] un gada dienas [DDD] — no 001 līdz 365 (366 garajā gadā). Piemēram, "1981-04-05" ir arī "1981-095".

Šo formātu daļēji izmanto vienkāršās datoraparatūras sistēmās, kurās nepieciešama datumu sistēma, bet pilna kalendāra aprēķināšanas programmatūra var būt nopietns traucēklis. Šīs sistēmas bieži, bet nekorekti, attiecina uz juliāna dienu.

## Laiks

*ISO 8601* izmanto 24 stundu pulksteņa sistēmu. Pamatformāts ir [hh][mm][ss], un paplašinātais formāts ir [hh]:[mm]:[ss]. [hh] ir divu ciparu stunda (no 00 līdz 24), kur 24 lieto tikai, lai apzīmētu pusnakti dienas beigās. [mm] apzīmē minūti no 00 līdz 59. [ss] ir sekunde no 00 līdz 59 (vai 60 izņēmuma gadījumos, lai apzīmētu pievienoto lieko sekundi). Tādējādi laiku var pierakstīt "13:47:30" vai "134730".

ir pieļaujama elementu atmešana, lai samazinātu precizitāti. Var lietot formātus [hh]:[mm], [hh][mm] un [hh].

Decimālo daļu var pielietot jebkuram no trijiem laika elementiem. To norāda, izmantojot decimālo atdalītāju (vai nu komatu, kuru iesaka ISO 31, vai punktu). Decimāldaļa attiecas tikai uz precīzāko laika komponentu, pārējos komponentus atmet. Piemēram, lai pierakstītu "14 stundas, 30 minūtes un pusminūte", nav jāiekļauj sekundes elements: to pieraksta kā "14:30,5" vai "1430,5".

Pusnakts ir īpašs gadījums, un to var pierakstīt gan kā "00:00", gan "24:00". "00:00" tiek attiecināts uz dienas sākumu, un to pielieto visbiežāk. Lai apzīmētu dienas beigas, izmanto "24:00". "2007-04-05T24:00" ir tas pats, kas "2007-04-06T00:00".

### Laika joslas

Ja kopā ar laiku nav dota informācija par laika joslu, tad jāuzskata, ka laiks ir pierakstīts lokālajā laika joslā. Lai gan to var droši lietot cilvēki noteiktā apgabalā, sazinoties starp dažādām laika joslām, var rasties pārpratumi, tādēļ parasti tiek norādīta laika josla, izmantojot standarta pierakstu.

#### UTC
Ja laiks ir pēc UTC laika joslas, pēc laika vērtības tiek pievienots burts 'Z' (no  — "nulle", jo UTC ir 0. laika josla). Piemēram, "09:30 UTC" tiek pierakstīts kā "09:30Z" vai "0930Z"; "14:45:15 UTC" jābūt "14:45:15Z" vai "144515Z".

#### Citas laika joslas
Joslas apzīmētāju citām laika joslām veido kā starpību no UTC, formātā ±[hh]:[mm], ±[hh][mm] vai ±[hh]. Tādējādi, ja ir jāpieraksta laiks, kas ir vienu stundu priekšā UTC (laiks Berlīnē ziemā), tad joslas apzīmētājam jābūt "+01:00", "+0100", vai vienkārši "+01". Jāņem vērā, ka joslas apzīmētājs ir tikai atšķirība no UTC, un tas neņem vērā informāciju par vasaras un ziemas laiku. Sekojoši pieraksti rāda vienu un to pašu laiku: "18:30Z", "22:30+04", "1130-0700" un "15:00-03:30".

#### Laika joslu pārrēķināšanas
Pārrēķiniem starp laika joslām jāizmanto šādas sakarības:
:"laiks joslā A" - "UTC atšķirība joslai A" = "laiks joslā B" - "UTC atšķirība joslai B" = laiks UTC

:"laiks joslā B" = "laiks joslā A" - "UTC atšķirība joslai A" + "UTC atšķirība joslai B".

Piemēram, kāds laiks būs Losandželosā brīdī, kad tiek atvērta Ņujorkas birža?
:laiks joslā PST = 09:30 - (-05:00) + (-08:00) = 06:30

Laiks Deli, kad tiek atvērta Ņujorkas birža:
:laiks Indijas joslā = 09:30 - (-05:00) + (+5:30) = 20:00

## Kombinētais pieraksts

Kombinēto datuma un laika pierakstu (bez atstarpēm) veido formātā T, kur laika atdalītāju [T] (*time* — "laiks") izmato, lai parādītu laika elementu sākumu.  un  ir datuma un laika pieraksts, atbilstoši standartam. Vispārējā gadījumā kombinēto datumu var pierakstīt šādi: [YYYY]-[MM]-[DD]T[hh]:[mm] (paplašinātais formāts), piemēram "2007-04-05T14:30". Pierakstā "20071023T1200Z" lietots pamatformāts [YYYY][MM][DD]T[hh][mm]Z.

Lai cilvēkam būtu vieglāk lasīt, visbiežāk datuma un laika daļas tiek atdalītas ar atstarpi vai citu simbolu. Šajā gadījumā sistēmā tas aizņem divus atsevišķus laukus, atšķirībā no kombinēta pieraksta viena lauka. *ISO 8601* standartā ir pieļaujami atsevišķi datuma un laika pieraksti. Piemēram, "2007-04-05 14:30".

## Periodi (ilgumi)

Periodus var attēlot formātā P[n]Y[n]M[n]DT[n]H[n]M[n]S (vai P[n]Y[n]W[n]DT[n]H[n]M[n]S, izmantojot nedēļu formātu). Šajā pierakstā [n] jāaizstāj ar attiecīgo skaitli pirms elementa simbola. Vairākciparu elementiem priekšā nav obligāti jāliek nulles, bet ir ieteicamas, lai būtu skaidrāk uztverams periods. Elementu simboli var būt: 'P' — perioda formāta pazīme, 'Y' — gads, 'M' — mēnesis, 'W' — nedēļa, 'D' — diena, 'T' — laika sekcijas pazīme, 'H' — stunda, 'M' — minūte un 'S' — sekunde. Piemēram, "P3Y6M4DT12H30M0S" ir "periods 3 gadi, 6 mēneši, 4 dienas, 12 stundas, 30 minūtes un 0 sekundes". Elementus var atmest, ja to vērtība ir nulle. Tā kā pierakstā divās vietās tiek izmantots simbols 'M', tad ar "P1M" apzīmē vienu mēnesi, bet ar "PT1M" — vienu minūti. Mazākajai vērtībai var būt arī decimāldaļa. Piemēram, "P0,5Y" nozīmē "puse no gada".

Periodam var izmantot arī kombinēto paplašināto formātu: P[GGGG]-[MM]-[DD]T[hh]:[mm]:[ss]. iepriekšminēto piemēru šajā gadījumā var pierakstīt kā "P0003-06-04T12:30:00".

## Laika intervāli

Laika intervāli apzīmē noteiktu laika daudzumu. Tos var parādīt četros veidos:
# ar sākumu un beigām, piem., "2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
# ar sākumu un ilgumu, piem., "2007-03-01T13:00:00Z/P1Y2M10DT2H30M"
# ar ilgumu un beigām, piem., "P1Y2M10DT2H30M/2008-05-11T15:30:00Z"
# tikai ilgumu "P1Y2M10DT2H30M"

Šajos formātos pirmajiem trijiem nepieciešamas divas atsevišķas sekcijas, kas parasti atdalītas ar slīpsvītru '/'. Dažos pielietojumos slīpsvītras vietā izmanto dubultdefisi '--'.

Formātā , ja kāds no beigu sekcijas elementiem ir izlaists, to pieņem tādu pašu, kā sākuma sekcijā, ar to pašu laika joslu. Šī īpašība ļauj koncentrēti pierakstīt laika intervālus. Piemēram, lai pierakstītu divu stundu intervālu ar sākuma un beigu laiku, jāraksta "2007-12-14T13:30/15:30"; starp datumiem — "2008-02-15/03-14".

Ja intervālam nepieciešama lielāka precizitāte, tad pierakstā jāpievieno vairāk elementu. Piemēram, ja ir jāparāda periods aptuveni trīs dienas, tad var rakstīt "2007-11-13/15", bet ja nepieciešams precīzi parādīt sākuma un beigu laiku, tad jāpaplašina līdz "2007-11-13T00:00/15T24:00".

### Atkārtojošies intervāli

Atkārtojošies intervāli tiek veidoti, intervāla izteiksmes sākumā pievienojot "R[n]/", kur 'R' ir atkārtošanās pazīme (*repeat* — atkārtot), un [n] ir atkārtojumu skaits. Izlaists [n] nozīmē bezgalīgu atkārtošanos. Piemēram, lai pierakstītu, "P1Y2M10DT2H30M" piecas reizes, sākot ar "2008-03-01T13:00:00Z", jālieto "R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M".

## Nogrieztais pieraksts
Standarta redakcija *ISO 8601:2000* ļāva nogriešanu (ja ir vienošanās), kur vadošos datuma vai laika komponentus varēja atmest. Tas pieļāva izmantot divu ciparu gadus: YY-MM-DD un YYMMDD. Šis pretrunīgais formāts tika atcelts *ISO 8601:2004*.

## Skatīt arī
* , Datums un laiks internetā, 2002-07

## Atsauces

## Ārējās saites
* ISO 8601:2004(E) noISO (zip-pdf, 228KB)
* ISO 8601 kopsavilkums
* Technical Committee ISO/TC 154, procesi, datu elementi un dokumenti komercijā, ražošanā un administrēšanā
* ISO 8601 ''Markus Kuhn'' kopsavilkums
* ISO 8601 kalendāra matemātika
* Pašreizējais datums nedēļas datuma un kārtas datuma formātā
* W3C Specifikācija par UTC datumu un laiku un IETF interneta standarts , kas bāzēts uz ISO 8601

### Pielietojumi
* konvertēšana un pielietojums
* pielietojums Java (Joda-Time)
* Nokonfigurē savu datoru ISO 8601 prasībām (padomi Microsoft Windows datoriem)