user: ISO 8601란 무엇인가?

gpt: **ISO 8601** ''Data elements and interchange formats - Information interchange - Representation of dates and times''은 날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준이다. 이 표준은 국제 표준화 기구에 의해 공포되었으며 1988년에 처음으로 공개되었다. 이 표준의 목적은 날짜와 시간을 표현함에 있어 명백하고 잘 정의된 방법을 제공함으로써, 날짜와 시간의 숫자 표현에 대한 오해를 줄이고자함에 있는데, 숫자로 된 날짜와 시간 작성에 있어 다른 관례를 가진 나라들간의 데이터가 오갈때 특히 그렇다.

일반적으로, ISO 8601은 그레고리력 에서의 날짜와  24시간제에 기반하는 시간, 시간 간격 그리고 그들의 조합에 대한 표현과 형식에 적용된다. 이 표준은 표현할 날짜/시간 요소에 어떠한 특정 의미도 할당하지 않는다; 그 의미는 사용 맥락에 따라 달라질 것이다. 추가로, 표현될 날짜와 시간은 표준 내에서의 지정된 의미의 숫자가 아니고서는 단어를 포함할 수 없으며 단어들은 문자를 사용하지 않는다.

교환을 위한 표현에서, 날짜와 시간은 재배치되어서, 가장 큰 시간 용어가 왼쪽에 놓이며 각각의 더 작은 용어들은 이전 용어의 우측에 놓이게 된다. 표현은 아라비아 숫자와 표준 내에서 특정 의미를 제공하는  어떤 문자들로 작성되어야 한다. 그것이 의미하는 바는, "January" 혹은 "Thursday"처럼 날짜의 일부를 작성하는 어떤 평범한 방법이 교환 표현에서는 허용되지 않는다는 것이다.

user: 시간에 대해서도 설명해 주세요.

gpt: ISO 8601는 24시간 시계 시스템을 사용한다. ''기본 형식''은 이며 ''확장 형식''은 ::다.
그래서 시간은 기본 형식인 "134630"으로 나타낼 수도 있고 확장 형식인 "13:47:30"와 같이 나타낼 수도 있다.

초 혹은 분과 초 모두, 시간을 더욱 더 간결하게 표현하기 위해  기본 혹은 확장 시간에서 생략될 수도 있다: :,  그리고 는 결과적으로 정확도가 줄어든 시간 형식이 된다.

자정은 특별한 경우인데 "00:00" 또는 "24:00" 로도 참조될 수 있다. "00:00" 표기법은 달력 일자의 시작에서 사용되며 좀 더 많이 사용된다. 일자의 마지막에서는 "24:00"를 사용한다. "2007-04-05T24:00"는 "2007-04-06T00:00와 동일한 시점이다 .

소수가 세 개의 시간 요소 중 어디에든 더해질 수 있다. 하지만, 소수는 표현 상에서 오직 가장 낮은 순위의 시간 요소에 더해질 수 있다. 소수점인 쉼표 혹은 마침표는 시간 요소와 그것의 소수 사이의 구분자로써 사용될 수 있다. "14시, 30과 0.5분"을 표현하기 위해, 초 단위 표현을 포함하지 말라. "14:30,5", "1430,5", "14:30.5" 혹은 "1430.5"로 표현하라. 소수를 위한 소수점 이하 자릿수에 대한 제한은 없다. 하지만, 소수점 이하 자릿수는 통신 당사자들간의 합의를 필요로 한다.

## 표준 시간대 지정자
Z
±hh:mm
±hhmm

ISO 8601의 표준 시간대는  지역 시간, UTC 혹은 UTC의 오프셋으로써 표현된다.

만약 UTC 관계 정보에 시간 표현이 함께 주어지지 않는다면, 시간은 지역 시간으로 간주된다. 동일한 시간대에서 통신 시 지역 시간을 가정하는 것이 안전한 방법일지라도, 서로 다른 시간대 간의 통신에서 지역 시간을 사용하는 경우에는 애매모호할 수 있다. 단일 지리적 시간대 간조차도, 어떤 지역 시간은 해당 지역이 일광 절약 시간을 준수하는 경우 애매모호해질 수 있다.

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

### UTC에서의 시간 오프셋
UTC에서의 오프셋은 위에서 Z를 붙였던 것과 동일한 방법으로 ±:, ±, 혹은 ± 형식의 시간 뒤에 덧붙인다. 그래서 기술 중인 시간이 UTC보다 한 시간 앞선다면 , 지역 지정자는 "+01:00", "+0100" 혹은 간단히 "+01"가 될 수 있다. UTC 너머의 시간을 표현하려면 음수의 오프셋을 사용한다. 예를 들어, 겨울 기간의 뉴욕 시간은 UTC−05:00이다. 다른 시간 오프셋을 알아보려면, UTC 시간 오프셋 목록을 참고하라. 음수 오프셋을 표현하기 위해, ISO 8601는 하이픈-마이너스 혹은 마이너스 기호 문자 사용을 지정하고 있다. 만약 상호교환 문자 세트가 제한되어 있거나 마이너스 기호 문자를 가지고 있지 않다면, 하이픈-마이너스가 사용되어야 할 것이다. ASCII는 마이너스 기호를 가지고 있지 않으므로, 하이픈-마이너스 문자 가 사용되어야 한다. 문자 세트가 마이너스 기호를 가지고 있다면, 해당 문자가 사용되어야 한다. Unicode는 마이너스 기호를 가지고 있고, 그것의 문자 코드는 U+2212 다; HTML 문자 엔티티 호출은 다. 마이너스 기호 사용은 유사한 표준과 충돌을 일으키므로, ISO 8601 구현은 아마도 하이픈-마이너스와 마이너스 기호 문자 모두를 허용할 것이다.

다음의 모든 시간들은 동일한 순간을 참조한다: "18:30Z", "22:30+04", "1130−0700" 그리고 "15:00−03:30". 항해 시간대 문자는 Z 없이는 사용되지 않는다. UTC 시간을 계산하려면 지역시간에서 오프셋만큼을 빼야 한다. 즉  "15:00−03:30"는 15:00−을 해서 18:30 UTC를 얻게 된다.

추가로 특별한 표현인 "Z"를 갖는, 0 오프셋도 수치적으로 말하면 "+00:00", "+0000" 혹은 "+00"으로써 말할 수 있다. 하지만, "−00:00", "−0000" 혹은 "−00"처럼, 음수 기호로 수치적으로 표현하는 것은 허용되지 않는다. 기호 사용 지시 섹션 에서는 양수 혹은 0 값을 위해 플러스 기호가 사용되고, 음수 값을 위해 마이너스 기호가 사용되어야 한다고 언급하고 있다. ISO 8601의 프로파일과는 다르게, 이 규칙에 있어 대립하고 있는 RFC3339는 "-00"의 사용을 "+00"과 동일한 표시이지만 다른 함축적인 의미로 허용하고 있다.

ISO 8601은 문자 세트가 제한된 경우 하이픈 을 마이너스  문자로 사용되는 것을 허용한다. 대조적으로, RFC 3339는 음수 오프셋을 표현하기 위해 하이픈  기호를 명시적으로 요구하며 마이너스 기호의 사용은 허용하지 않는다.