Answer by Matt Johnson은 정확한 입력입니다. 나는 단지 몇 가지 생각을 덧붙일 것이다. 오프셋에서-UTC
offset-from-UTC 대
시간대 UTC 뒤로/앞으로 단지 시간, 분, 초 단위입니다. 혼자만해도 이것은 타임 라인상의 특정 순간에 날짜 시간을 만듭니다. 그러나 official time zone name을 포함하는 것만 큼 유익하지는 않습니다.
시간대 이름을 포함하는 표준은 아직 없지만 다른 사람들이 java.time 클래스의 선두를 따라 대괄호 안에 시간대 이름을 추가하기를 바랍니다. 사각 브래킷 부분을 자르지 않은 소프트웨어와 역 호환되도록 간단하게 자르기 때문에이 형식은 나에게 합리적입니다.
예 :
2011-12-03T10:15:30+01:00[Europe/Paris]
. 데이터가 2011-12-03T10:15:30+01:00
인 경우 타임 라인에서 그 순간을 식별 할 수 있지만 적용 할 규칙이 무엇인지 모르기 때문에 다른 순간을 동일한 마음의 프레임으로 조정할 수는 없습니다. Europe/Zagreb
, Africa/Brazzaville
, Arctic/Longyearbyen
및 Europe/Isle_of_Man
과 같은 영역은 모두 +01:00
의 오프셋을 공유하지만, Europe/Paris
의 오프셋과는 다른 다른 조정이 가능할 수 있습니다. 따라서 3 일을 값 2011-12-03T10:15:30+01:00
에 추가하려고하면 이러한 3 일 동안 발생할 수있는 DST 컷오버와 같은 조정이 적용될 필요가 있는지 모르기 때문에 실제로 결과를 충실하게 계산할 수 없습니다.
시간대는 Daylight Saving Time (DST)과 같은 예외 처리 규칙 세트를 정의합니다. 전 세계의 정치가들은 시간대를 조정하거나 재 정의하는 것을 즐깁니다. 따라서 이러한 규칙은 자주 변경됩니다. 시간대는 시간 경과에 따른 오프셋의 집합으로 생각할 수 있으며, 각 기간에는 특정 지역에서 특정 오프셋이 사용 된 역사의 많은 기간이 있습니다.
표준 시간대를 UTC 오프셋 값의 모음으로 생각할 수 있습니다. America/Los_Angeles
에서 올해의 부분은 UTC보다 8 시간 늦으며, 올해의 일부는 UTC보다 7 시간 늦습니다. 그러면 해당 시간대의 일부로 2 점의 데이터가 수집됩니다.
지난 몇 년 동안 터키는 매년 전년도의 일부를 UTC보다 2 시간, 그리고 매년 3 시간 앞당겨 보냈습니다. 2016 년에는 무한대로 3 시간 머물렀다.따라서 시간대에있는 데이터의 여러 지점 Europe/Istanbul
.
그냥 개인적으로 나는 심지어
2011-12-03T10:15:30+01:00
같은 값을 사용하여 훨씬 값이 표시되지 않는
UTC
를 사용합니다. 표준 시간대가 없으면 UTC 만 사용할 수도 있습니다. 이 경우
2011-12-03T09:15:30Z
(오전 10시 대신 오전 9시).
일반적으로 가장 좋은 방법은 날짜 - 시간 값을 저장하고 교환 할 때 UTC를 사용하는 것입니다. UTC를 One-True-Time으로 생각하십시오., 구역 또는 오프셋 값은 단순한 변형입니다.
두 번째 글 머리 기호는이 질문을 다소 넓게 만듭니다. – chrylis
[W3C 설명] (https://www.w3.org/TR/NOTE-datetime)을 읽는 방식은 정확합니다. ISO 8601은 영역 오프셋을 지원하지만 가변 오프셋이있는 시간대는 지원하지 않습니다 (일반적으로 여름 시간, IANA 시간대의 상당 부분을 차지함). –
@ OleV.V. 링크 된 W3C 노트 문서는 실제 ISO 8601 표준의 간략한 개요입니다. 나는 훌륭한 [Wikipedia article on ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601)과 [week date] (https://en.wikipedia.org/wiki/ISO_week_date)를 읽고, 아마도 표준 [초안] (https://duckduckgo.com/?q=ISO+8601+draft&t=osx&ia=web) (공식 표준은 유료화 벽 뒤에 있습니다). –