For faster navigation, this Iframe is preloading the Wikiwand page for ISO 8601.

ISO 8601

ISO 8601 – międzynarodowa norma ISO określająca sposób zapisu daty i czasu. Obecna wersja (ISO 8601:2004) jest trzecią edycją dokumentu, datowaną na 2004-12-03. Zastępuje ona pierwszą edycję – ISO 8601:1988 – oraz drugą edycję – ISO 8601:2000. Polski odpowiednik to norma PN-EN 28601:2002[1] (poprzednio PN-82/01204 i PN-90/N-01204) wycofana w dniu 2008-05-29 bez zastąpienia. Stosowaniu standardu ISO 8601 w protokołach internetowych poświęcony jest RFC 3339 ↓.

Podstawowa koncepcja tego standardu polega na ustaleniu momentu w czasie z dokładnością ustaloną przez użytkownika za pomocą odpowiednio sformatowanych ciągów znaków ustawionych w porządku od najbardziej znaczących (rok) do najmniej znaczących (sekundy bądź ich części). Norma określa numeryczny format daty i czasu (bez używania nazw miesięcy, dni tygodnia czy literowych oznaczeń czasu przed lub po południu).

Zapis daty

W standardzie ISO 8601 daty mogą być przedstawione na trzy różne sposoby: daty kalendarzowe, daty porządkowe i daty tygodniowe. Standard korzysta z kalendarza gregoriańskiego. Należy zwrócić uwagę, że rok 0001 w standardzie ISO 8601 oznacza 1 rok n.e., poprzedni – 0000 – oznacza rok 1 p.n.e., a –0001 to rok 2 p.n.e. itd. Dla uniknięcia dwuznaczności rok powinien być zapisywany za pomocą czterech cyfr.

Daty kalendarzowe

Data kalendarzowa to data, w której dzień jest liczony kolejno w każdym miesiącu. Np. 2 stycznia to data kalendarzowa. W standardzie ISO 8601 data kalendarzowa ma format YYYY-MM-DD, czyli 2 dzień stycznia w roku 2005 zapisywany jest jako 2005-01-02. Można również opuścić separatory, zapisując datę w sposób 20050102. Format z separatorami to format rozszerzony, a bez to format podstawowy. Standard pozwala na przedstawianie dat z mniejszą precyzją: można zapisać 2005-01, co oznacza styczeń roku 2005.

Daty porządkowe

Data porządkowa to taka, w której dzień jest przedstawiony jako kolejny w całym roku, za pomocą trzech znaków z wiodącymi zerami. 2 stycznia to 002, 1 lutego to 032, itd. 31 grudnia to 365 lub 366 w latach przestępnych. Data porządkowa ma format YYYY-DDD. 2 stycznia 2005 zapisywany jest jako 2005-002, a w formacie podstawowym 2005002.

Daty tygodniowe

Data tygodniowa to taka, w której dzień jest oznaczany jako kolejny w kolejnym tygodniu roku. Tydzień oznaczany jest dwiema cyframi od 01 do 52 lub 53. Dzień oznaczany jest jedną cyfrą, od 1poniedziałek do 7niedziela. Format daty tygodniowej to YYYY-Www-D. Np. 2 lutego 2005 to 2005-W05-3 lub w zapisie podstawowym 2005W053 – trzeci dzień (środa) piątego tygodnia roku 2005.

Pierwszy tydzień roku to taki, w którym są przynajmniej 4 dni stycznia. Inaczej mówiąc, taki, w którym jest pierwszy czwartek stycznia lub dzień 4 stycznia. To oznacza, że tydzień 01 może zawierać dni z poprzedniego roku, a tydzień 53 – dni z następnego roku. Np. 1 stycznia 2005 wypadł w sobotę, więc 2004-W53 trwa od 27 grudnia 2004 do 2 stycznia 2005, a 2005-W01 zaczyna się 3 stycznia 2005 roku. Data kalendarzowa 2005-01-02 to data tygodniowa 2004-W53-7.

Zapis czasu

Standard używa czasu 24-godzinego. Format podstawowy to hhmmss, a rozszerzony to hh:mm:ss. Można oczywiście użyć mniejszej precyzji: hh:mm, hhmm lub hh.

Można również używać części sekund, minut lub godzin, zaznaczając to znakiem dziesiętnym: kropką lub przecinkiem w zależności od lokalnych ustaleń. Dzielić można tylko najmniej znaczącą część, więc, zapisując np. 14 godzin, 30 i pół minuty, nie umieszczamy sekund: 14:30,5.

Północ oznaczana jest zarówno 00:00 jak i 24:00. Np. 24:00 31 grudnia 2004 to ten sam moment co 00:00 1 stycznia 2005.

Strefy czasowe

Oznaczenia czasu UTC dokonuje się przez umieszczenie litery Z po czasie. Np. godzina 9:30 czasu UTC oznaczana jest 09:30Z lub 0930Z.

Inne strefy czasowe oznacza się, zaznaczając ich przesunięcie (offset) względem czasu UTC, w formacie ±hh:mm, ±hhmm lub ±hh. Standardowy czas geograficzny w Polsce (zwany zwyczajowo czasem zimowym) jest przesunięty o godzinę do przodu w stosunku do czasu UTC, a czas letni – o dwie godziny. Godzina 15:30 w Polsce w zimie zapisywana jest jako 15:30+01 i oznacza ten sam czas co 14:30Z.

Łączny zapis daty i czasu

Łącznie datę i czas w standardzie ISO 8601 zapisuje się, wstawiając literę T między zapis daty i czasu. Powszechnie używany jest zapis YYYY-MM-DDThh:mm:ss±hh:mm, np. 2005-01-02T03:01:45+01:00. Dopuszczalne i stosowane jest także rozdzielanie daty od czasu przy pomocy spacji: YYYY-MM-DD hh:mm:ss ±hh:mm[1].

Aktualny czas UTC podany w rozszerzonym wariancie standardu ISO 8601: 2023-06-09T21:36:48Z [Odśwież]

Przykłady użycia

Polecenie date w konsoli systemów z rodziny Unix:

echo "Format rozszerzony YYYY-MM-DDThh:mm:ssZ"
date -u +%Y-%m-%dT%H:%M:%SZ
echo "Format podstawowy YYYYMMDDThhmmssZ"
date -u +%Y%m%dT%H%M%SZ
echo "Format podstawowy mniejszej precyzji YYYYMMDDThhmm"
date -u +%Y%m%dT%H%MZ
# date -I[FORMAT], --iso-8601[=FORMAT]  wypisanie daty/czasu w formacie ISO 8601.
# FORMAT=„date” dla podania samej daty (tryb domyślny), „hours” (godziny), „minutes”,
# „seconds” albo „ns” dla podania daty i czasu z pożądaną dokładnością.
date --iso-8601="minutes"

Funkcja date() w PHP:

<?php
$timeoffset = intval(date("Z"));
echo date("Y-m-d\TH:i:s\Z",time()-$timeoffset);
echo"\n";
// PHP 5 lub nowsze:
echo date("c"); // 2004-02-12T15:19:21+00:00
echo"\n";
?>

Funkcja Date#toISOString() w JavaScript:

let date = new Date('05 October 2011 14:48 UTC')

console.log(date.toISOString()) // powinno wyświetlić w konsoli 2011-10-05T14:48:00.000Z

Przypisy

  1. a b PN-EN 28601:2002 - wersja polska, sklep.pkn.pl [dostęp 2017-11-23] [zarchiwizowane z adresu 2017-12-15] (pol.).

Linki zewnętrzne

{{bottomLinkPreText}} {{bottomLinkText}}
ISO 8601
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Wikiwand 2.0 is here 🎉! We've made some exciting updates - No worries, you can always revert later on