Files
llm-wiki/raw/official-docs/rfc3339-datetime-utc.md
T

11 KiB

title, source_type, url, archive_url, status, confidence, tags, related_projects, related_branches, created, last_reviewed
title source_type url archive_url status confidence tags related_projects related_branches created last_reviewed
RFC 3339 — Date and Time on the Internet (Timestamps, UTC, "Z" Offset) official-doc https://www.rfc-editor.org/rfc/rfc3339 raw high
datetime
timestamp
utc
iso8601
rfc
ietf-standards-track
serialization
schema
feature-runtime-health-lifecycle-contract
feature-schema-serialization-contract
2026-05-27 2026-05-27

RFC 3339 — Date and Time on the Internet (Timestamps)

Layer: raw/official-docs/ — IETF RFC 3339 (Standards Track, 2002-07) 발췌. Internet protocol 의 timestamp 표현 — ISO 8601 의 profile. UTC 의무, "Z" suffix 의 정확한 의미, ABNF 기반 date-time 문법 정의의 normative reference.

Parent / 활용 branch (필수)

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-runtime-health-lifecycle-contract D12 — 모든 timestamp (health endpoint timestamp, startup time, last-checked) 를 UTC 로 직렬화하고 "Z" suffix 강제하는 표준 근거
raw/branch-notes/feature-schema-serialization-contract API response / event payload 의 datetime 직렬화 형식 (Jackson JavaTimeModule + WRITE_DATES_AS_TIMESTAMPS=false → RFC 3339 string) 표준 근거

컨텍스트

서버/클라이언트 timezone 혼동, daylight saving 으로 인한 ambiguity, "2026-05-27 14:30" 같은 local 시각의 비호환성 문제를 막기 위한 운영 계약. ca-tmpl 의 health/lifecycle 응답과 schema serialization contract 모두 RFC 3339 + UTC + "Z" 를 baseline 으로 강제하려면 1차 표준 근거 필요.

출처 / Source

  • 원본 URL: https://www.rfc-editor.org/rfc/rfc3339
  • 텍스트 버전: https://www.rfc-editor.org/rfc/rfc3339.txt
  • 아카이브 URL: (미수집)
  • 저자 / 조직: IETF — G. Klyne (Clearswift Corporation), C. Newman (Sun Microsystems)
  • 발행일: 2002-07 (RFC 3339 Standards Track)
  • 관련: ISO 8601 (profile of), RFC 2822 (Internet Mail date/time format), JSON Schema format: date-time
  • 마지막 확인일: 2026-05-27 (curl + sed 로 본문 verbatim 발췌. WebFetch 본문은 quote style 차이 있어 정식 텍스트 버전을 SSOT 로 사용)

왜 저장했는지 / Why archived

ca-tmpl 의 runtime health endpoint 와 schema serialization contract 가 "datetime 은 RFC 3339 UTC Z suffix 만 허용" 을 baseline 으로 강제하는 결정의 normative 근거. company tech blog (Naver / Toss) 의 UTC-only 사례를 "best practice" 로 부르려면 본 RFC 가 standard 으로 corroborate 해야 함.

핵심 인용 / Key quotes (verbatim, 2026-05-27 capture via curl + sed -n)

[§2 Definitions, line 164] "Z A suffix which, when applied to a time, denotes a UTC offset of 00:00; often spoken "Zulu" from the ICAO phonetic alphabet representation of the letter "Z"."

[§4.1 Coordinated Universal Time (UTC), line 213] "Because the daylight saving rules for local time zones are so convoluted and can change based on local law at unpredictable times, true interoperability is best achieved by using Coordinated Universal Time (UTC). This specification does not cater to local time zone rules."

[§4.3 Unknown Local Offset Convention, line 256] "If the time in UTC is known, but the offset to local time is unknown, this can be represented with an offset of "-00:00". This differs semantically from an offset of "Z" or "+00:00", which imply that UTC is the preferred reference point for the specified time."

[§5.6 Internet Date/Time Format, line 401] "The following profile of ISO 8601 [ISO8601] dates SHOULD be used in new protocols on the Internet. This is specified using the syntax description notation defined in [ABNF]."

[§5.6 ABNF, line 415] "time-offset = "Z" / time-numoffset"

[§5.6 ABNF, line 421] "date-time = full-date "T" full-time"

[§5.6 NOTE, line 432] "Applications that generate this format SHOULD use upper case letters."

[§5.8 Examples, line 515] "1985-04-12T23:20:50.52Z"

Claims Extracted / 추출된 주장

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
RFC3339-C1 "Z" suffix 는 UTC offset 00:00 을 의미. ICAO 음성기호 "Zulu" 에서 유래 [§2 Definitions, line 164] "Z A suffix which, when applied to a time, denotes a UTC offset of 00:00; often spoken "Zulu" from the ICAO phonetic alphabet representation of the letter "Z"." official-standard RFC 3339 timestamp 의 "Z" suffix 해석 "Z" 와 "+00:00" 의 의미론적 동등성 — RFC3339-C3 가 부분적으로 corroborate (§4.3 가 "Z" 와 "+00:00" 는 UTC preferred reference 의미, "-00:00" 와 의미상 다름)
RFC3339-C2 true interoperability 는 UTC 사용으로 달성됨 — daylight saving rule 의 복잡성 + 예측 불가 변경 때문. 본 spec 은 local timezone rule 을 다루지 않음 [§4.1, line 213] "Because the daylight saving rules for local time zones are so convoluted and can change based on local law at unpredictable times, true interoperability is best achieved by using Coordinated Universal Time (UTC). This specification does not cater to local time zone rules." official-standard Internet protocol 간 timestamp 교환의 baseline 권고 "UTC 만 허용" 의 normative MUST 는 아님 — best achieved by 는 권고. 단 numeric offset 도 RFC 3339 가 허용 (§4.2)
RFC3339-C3 UTC 가 알려졌으나 local offset 미상이면 -00:00 으로 표현. 이는 Z 또는 +00:00 (둘 다 UTC 가 preferred reference 임을 의미) 와 의미상 다름 [§4.3, line 256] "If the time in UTC is known, but the offset to local time is unknown, this can be represented with an offset of "-00:00". This differs semantically from an offset of "Z" or "+00:00", which imply that UTC is the preferred reference point for the specified time." official-standard "-00:00" vs "Z"/"+00:00" 의 의미 구분 — UTC reference 의도 표시 여부 모든 client/parser 가 이 구분을 구현한다는 뜻은 아님 — 많은 라이브러리가 -00:00+00:00 를 동일 취급 (구현 한계, 표준 의도와 분리)
RFC3339-C4 본 RFC 의 date/time format 은 ISO 8601 의 profile 이며, 새 Internet protocol 에서 SHOULD 사용 [§5.6, line 401] "The following profile of ISO 8601 [ISO8601] dates SHOULD be used in new protocols on the Internet. This is specified using the syntax description notation defined in [ABNF]." official-standard 새 Internet protocol 설계 시 datetime 형식 선택 기존 protocol 의 다른 형식 (예: RFC 2822 email Date header) 을 금지한다는 뜻은 아님 — RFC 3339 는 new protocols 에 SHOULD
RFC3339-C5 ABNF: time-offset = "Z" / time-numoffset — offset 은 Z 또는 명시적 numeric offset (+/- HH:MM) 만 허용 [§5.6, line 415] "time-offset = "Z" / time-numoffset" official-standard RFC 3339 timestamp parser/serializer 의 offset 부분 문법 "EST", "KST" 같은 alphabetic timezone 약어는 RFC 3339 timestamp 에 허용되지 않음 (ABNF 에 의해 함의)
RFC3339-C6 ABNF: date-time = full-date "T" full-time — date 와 time 은 대문자 "T" 로 구분 [§5.6, line 421] "date-time = full-date "T" full-time" official-standard RFC 3339 timestamp 의 date-time separator 문법 note 에 따르면 lower-case "t"/"z" 도 ABNF 에 의해 허용되나 (§5.6 NOTE), 생성 시 대문자 SHOULD 권장 — RFC3339-C7 와 함께 해석
RFC3339-C7 본 format 을 generate 하는 application 은 대문자 letters SHOULD 사용 [§5.6 NOTE, line 432] "Applications that generate this format SHOULD use upper case letters." official-standard RFC 3339 timestamp 생성 시 대소문자 정책 parser 가 lower-case 를 reject 해도 되는지는 본 인용에 직접 없음 — RFC3339-C6 의 ABNF NOTE 에 따르면 lower-case 도 valid syntactically
RFC3339-C8 RFC 3339 timestamp 예시: 1985-04-12T23:20:50.52Z — date "T" time fractional-seconds "Z" 형식 [§5.8 Examples, line 515] "1985-04-12T23:20:50.52Z" official-standard RFC 3339 timestamp 구체적 표현 예시 (UTC + fractional seconds) fractional seconds 의 자릿수 제한은 없음 (time-secfrac = "." 1*DIGIT) — 본 예시는 2자리

Usage Boundaries / 적용 경계

  • 이 자료가 직접 증명하는 것:
    • RFC3339-C1~C3: "Z" 의 정확한 의미 (UTC offset 00:00, "Zulu") + UTC interoperability 권고 + -00:00 의 의미 구분
    • RFC3339-C4~C7: ISO 8601 profile 의 normative status + ABNF 문법 + 대문자 권고
    • RFC3339-C8: timestamp 의 구체적 표현 예시
  • 이 자료가 증명하지 않는 것:
    • "UTC 만 허용" 의 strict MUST — RFC 3339 는 numeric offset (예: -08:00) 도 valid syntactically (§4.2 + §5.6 ABNF)
    • timezone 정보를 별도 필드로 분리하는 것 (예: {"timestamp": "...Z", "tz": "Asia/Seoul"}) — application 책임
    • Java Instant / Python datetime / JS Date 가 RFC 3339 를 default 로 직렬화하는지 (각 언어/라이브러리 vendor 책임 — Jackson JavaTimeModule, Joda-Time, tzdata 등 별도 검증)
    • "yyyy-MM-ddTHH:mm:ss" (Z 없는 naive datetime) 가 RFC 3339 invalid 라는 점은 ABNF (full-time = partial-time time-offset, time-offset 필수) 가 함의하나 본 발췌에 직접 인용 없음
    • JSON Schema format: date-time 이 RFC 3339 를 강제하는 것은 JSON Schema spec 의 정의 — 본 RFC 범위 밖
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • ca-tmpl 의 Jackson 설정 (WRITE_DATES_AS_TIMESTAMPS=false, JavaTimeModule) 이 Instant.now()2026-05-27T07:00:00Z 형식으로 직렬화하는지 (실제 응답 검증)
    • health endpoint timestamp 가 모두 UTC 인지 (서버 timezone 이 KST 여도 직렬화는 Z 로 강제되는지)
    • MySQL DATETIME (timezone 없음) vs TIMESTAMP (UTC 저장) 의 선택과 RFC 3339 직렬화의 일관성 (DB layer 별도 검증)

메모 / Notes

  • WebFetch 가 §2 의 "Z" 정의를 정확히 반환하지 않아 (quote style 차이) curl https://www.rfc-editor.org/rfc/rfc3339.txt + sed -n 으로 raw text 직접 추출. 모든 line number 는 텍스트 버전 기준.
  • ABNF 의 time-numoffset = ("+" / "-") time-hour ":" time-minute (offset 의 정확한 syntax) 는 본 raw 에 별도 인용 없음 — RFC3339-C5time-offset 이 부분적으로 corroborate. 필요 시 §5.6 line 414 별도 발췌.
  • §4.4 "Unqualified Local Time" (timezone 없는 naive datetime — RFC 3339 가 명시적으로 discourage) 도 발췌 후보 — 본 raw 에 포함 안됨.
  • ISO 8601:2019 (최신 ISO 표준) 와 RFC 3339 (2002) 의 차이 — RFC 3339 는 더 제한적인 profile. 별도 raw 또는 wiki/concepts source-summary 에서 다룸.