ISO 8601

역사

ISO 8601 표준의 첫 판은 1988에 ISO 8601:1988으로 공개되었다. 이 표준은 날짜 및 시간에 대한 다양한 표기법을 토대로 하는 이전 ISO 표준 (ISO 2014, ISO 2015, ISO 2711, ISO 3307 그리고 ISO 4031)들을 통합하고 대체하였다. 2000년에 들어 두번째 판인 ISO 8601:2000이 자리를 대신하게 됐으며, 현재의 세번째 판인 ISO 8601:2004는 2004년 12월 1일에 공개되었다. ISO 8601는 ISO 기술 위원회 TC 154에 의해 준비되었으며, 위원회의 직접적인 책임 하에 있다.
ISO 2014는, 대체되긴 했지만, 큰 단위부터 작은 단위까지의 중대한 순서인 [YYYY]-[MM]-[DD]의 전체가 숫자로 된 표기법을 처음으로 도입한 표준이다. ISO의 주 넘버링 시스템은 ISO 2015에서 도입되었으며, 년도 내 일자 서수에 의한 일(days) 식별은 ISO 2711에서 처음으로 정의되었다.

날짜

이 표준은 민간 사용을 위한 국제 표준을 지원하는 그레고리력을 사용한다.
ISO 8601는 레퍼런스 달력 날짜를 파리에서 미터 협약(Convention du Mètre)가 체결된 날짜인 그레고리력 상의 1875년 5월 20일로 고정한다. 하지만, 컨벤션 이전의 ISO 달력 날짜는 여전히 1582년 10월 15일에 공식적으로 도입된 그레고리력과 호환된다. proleptic 그레고리안력에서의 초기 날짜는 파트너 교환 정보의 상호 동의로 사용될 수 있다. 이 표준은 모든 날짜가 앞뒤로 연결되어 있으므로, 율리우스력 사용은 표준에 있어 용납되지 않는다(날짜 전환 시, 날짜가 연속되지 않기 때문에).

연도

ISO 8601는 2000년 문제 해결을 위해, 최소한 네 자리 연도 [YYYY]를 규정한다. 그러므로 0000부터 9999까지의 연도를 표현하며, 0000년은 기원전 1년 (BCE)과 동일하며 다른 것들은 기원후 (CE)이다. 하지만, 1583년 이전의 연도들은 자동으로 표준에 맞지는 않다. 대신 [0000]부터 [1582] 까지의 범위 내 값들은 정보 교환 내 파트너들의 상호 동의 하에 사용될 수 있다.
0000년 이전 혹은 9999년 이후의 연도 표현을 위해, 표준은 연도 표현의 확장을 허용지만 송수신자 간의 동의 하에서만 가능하다. 확장된 연도 표현 [±YYYYY]은 최소한의 4자리를 뛰어넘어 여분의 연도 자릿수에 대해 동의된 상태여야 하며, 좀 더 일반적인 AD/BC(혹은 BCE/CE) 표기법 반드시 + 혹은 - 기호를 앞에 붙여야 한다; 관례에 따르면 기원전 1년는 +0000으로 레이블되고, 기원전 2년는 -0001로 레이블된다.

연중 일자

주와 달 정의의 임의적인 특성이 도움이 되기보다는 장애물이 되는 경우, 예를 들자면 다른 달력에서 날짜들을 날짜를 비교하는 경우, 연중 일자가 간단하다. 위에서 표현한데로, [YYYY]는 연도를 가리킨다. [DDD]는 해당 연도의 일자를 001부터 365(윤년의 경우 366)까지로 나타낸다. 예를 들면, "1981-04-05"는 "1981-095"다.
이 형식은 날짜 시스템을 필요로 하지만 전체적인 달력 계산 소프트웨어가 꽤나 부담스러운 간단한 하드웨어 시스템에 사용된다. 이 시스템은 때때로 "율리우스일"로써 참조되는데, 이는 천문학의 율리우스일와 혼동을 일으킬 수 있다. 율리우스일은 Julian proleptic calendar의 기원전 4713년 1월 1일 그리니치 정오(혹은 연도 [0000]의 그레고리 proleptic calendar를 사용하는 ISO 날짜 -4713-11-24의 정오)로부터 날짜를 0부터 시작하여 차례대로 세는 것을 말한다.

UTC

시간이 UTC인 경우, 시간 뒤에 빈칸없이 Z를 직접 추가해야 한다. Z는 오프셋이 0인 UTC를 위한 지역 지정자(zone designator)다. 그러므로 "09:30 UTC"는 "09:30Z" 혹은 "0930Z"로 표현된다. "14:45:15 UTC"는 "14:45:15Z" 혹은 "144515Z"가 될 수 있다.

UTC에서의 시간 오프셋

UTC에서의 오프셋은 위에서 Z를 붙였던 것과 동일한 방법으로 ±[hh]:[mm], ±[hh][mm], 혹은 ±[hh] 형식의 시간 뒤에 덧붙인다. 그래서 기술 중인 시간이 UTC보다 한 시간 앞선다면 (겨울 동안의 베를린 지역의 시간처럼), 지역 지정자(zone designator)는 "+01:00", "+0100" 혹은 간단히 "+01"가 될 수 있다. UTC 너머의 시간을 표현하려면 음수의 오프셋을 사용한다. 예를 들어, 겨울 기간의 뉴욕 시간은 UTC−05:00이다. 다른 시간 오프셋을 알아보려면, UTC 시간 오프셋 목록을 참고하라. 음수 오프셋을 표현하기 위해, ISO 8601는 하이픈-마이너스 혹은 마이너스 기호 문자 사용을 지정하고 있다. 만약 상호교환 문자 세트가 제한되어 있거나 마이너스 기호 문자를 가지고 있지 않다면, 하이픈-마이너스가 사용되어야 할 것이다. ASCII는 마이너스 기호를 가지고 있지 않으므로, 하이픈-마이너스 문자 (코드는 십진수 45 혹은 16진수로 2D다)가 사용되어야 한다. 문자 세트가 마이너스 기호를 가지고 있다면, 해당 문자가 사용되어야 한다. Unicode는 마이너스 기호를 가지고 있고, 그것의 문자 코드는 U+2212 (16진수로 2212)다; HTML 문자 엔티티 호출은 &minus;다. 마이너스 기호 사용은 유사한 표준과 충돌을 일으키므로, ISO 8601 구현은 아마도 하이픈-마이너스와 마이너스 기호 문자 모두를 허용할 것이다.
다음의 모든 시간들은 동일한 순간을 참조한다: "18:30Z", "22:30+04", "1130−0700" 그리고 "15:00−03:30". 항해 시간대 문자는 Z 없이는 사용되지 않는다. UTC 시간을 계산하려면 지역시간에서 오프셋만큼을 빼야 한다. 즉  "15:00−03:30"는 15:00−(−03:30)을 해서 18:30 UTC를 얻게 된다.
추가로 특별한 표현인 "Z"를 갖는, 0 오프셋도 수치적으로 말하면 "+00:00", "+0000" 혹은 "+00"으로써 말할 수 있다. 하지만, "−00:00", "−0000" 혹은 "−00"처럼, 음수 기호로 수치적으로 표현하는 것은 허용되지 않는다. 기호 사용 지시 섹션 (표준의 2004년도판의 3.4.2 섹션)에서는 양수 혹은 0 값을 위해 플러스 기호가 사용되고, 음수 값을 위해 마이너스 기호가 사용되어야 한다고 언급하고 있다. ISO 8601의 프로파일과는 다르게, 이 규칙에 있어 대립하고 있는 RFC3339는 "-00"의 사용을 "+00"과 동일한 표시이지만 다른 함축적인 의미로 허용하고 있다.
ISO 8601은 문자 세트가 제한된 경우 하이픈 (-)을 마이너스 (−) 문자로 사용되는 것을 허용한다. 대조적으로, RFC 3339는 음수 오프셋을 표현하기 위해 하이픈 (-) 기호를 명시적으로 요구하며 마이너스 (−)기호의 사용은 허용하지 않는다.

Truncated 표현

ISO 8601:2000는 (동의에 의해) 날짜와 시간의 앞선 컴포넌트가 생략된 곳에서 끊기를 허용했다. 이는 확실히 2자리 숫자의 연도 사용과 애매모호한 형식 YY-MM-DD와 YYMMDD을 허용한다. 이 규정은 ISO 8601:2004에서 제거되었다.

관례

인터넷 상에서, World Wide Web Consortium (W3C)는 에러율과 소프트웨어 복잡도를 줄이기 위해 제공된 날짜와 시간 형식을 제한하는 표준 프로파일을 정의하기 위해 ISO 8601를 사용한다.
RFC 3339는 인터넷 프로토콜과 표준에서의 사용을 위해 ISO 8601의 프로토콜을 정의한다. 해당 표준은 기원 이전에서의 기간과 날짜를 명시적으로 배제한다. 주 숫자와 서수 일자와 같은 좀 더 복잡한 형식은 허용되지 않는다.
RFC 3339는 ISO 8601가 금한, "-00:00"로 지정되는 0 시간대 오프셋 허용에 있어 구분된다. "+00:00" 혹은 0이 아닌 오프셋을 따르는 것이 오프셋 사용 시 선호됨에도 불구하고, RFC 3339는 선호되는 시간대를 말하는 것이 아니라는 함축된 의미를 전달하기 위해 "-00:00"을 지향한다. 이러한 "-00:00"을 따르는 관례는 이메일 헤더에서의 타임스탬프를 위해 RFC 3339를 사용하는 RFC 2822와 같은, 초기 RFC들로부터 파생되었다. RFC 2822는 타임스탬프 형식의 어떤 부분이든 ISO 8601에 일치한다는 것을 보장하지 않으므로, 충돌없이 이런 관례를 사용함에 있어 자유롭다.
ISO 8601는 여러 가지 명세들에 의해 참조되는데, ISO 8601 옵션의 전체 범주가 항상 사용되는 것은 아니다. 예를 들자면, TV, 디지털 라디오 등을 위한 여러 전자기기 프로그램 가이드 표준은 시간과 기간에서의 시점 기술을 위해 여러 가지 형식을 사용한다. ID3 오디오 메타 데이터 명세도 ISO 8601의 서브셋을 사용한다. GeneralizedTime은 ISO 8601의 또 다른 서브셋을 구성하고 있다.
2006년 현재로, ISO 8601 주간 날짜는 미국의 주요 브랜드 상업 패키징에서 기본 형식으로 채택됐다. 날짜 표기는 특정 브랜드보다는 특정 패키징, 통조림, 혹은 음료를 담는 공정 등에 의존적이다. 형식은 질적 보장을 위해 상당히 유용한데, 그로 인해 공정상의 오류들은 생산 주간까지 쉽게 추적될 수 있고, 생산품들은 리콜을 위해 정확하게 타켓팅될 수 있다.