한국어

개발자 도구 · Unix 타임스탬프 변환기

ISO 8601 대 RFC 3339: API 응답 뒤에 있는 두 가지 날짜 형식

· 배경

타임스탬프 iso-8601 API

하나의 API 계약으로 범위가 좁아지는 광범위한 날짜-시간 형식 퍼널
원본 ToolAcre 벡터 일러스트레이션

대부분의 API는 ISO 8601을 사용한다고 주장하며 실제로는 인터넷용으로 설계된 보다 엄격한 프로필인 RFC 3339을 사용합니다. 이 게시물에서는 두 문서, 차이점, 그리고 에포크 정수와 어떻게 관련되는지 설명합니다.

유효한 ISO를 거부하는 'ISO 8601' 필드 8601 — RFC 3339를 예상하는 API로 전송된 주 날짜 또는 정밀도가 낮은 값

"ISO 8601"라고 일반적으로 설명되는 API 필드는 하나의 날짜-시간 형태만 허용할 수 있습니다. 다른 표준에 유효한 표현을 보내면 여전히 파서가 실패할 수 있습니다. 해결책은 우산 이름에 대해 논쟁을 벌이는 것이 아닙니다. 예제와 검증 테스트를 통해 정확한 연결 문법을 문서화하는 것입니다.

ToolAcre는 `Date.toISOString()`의 안정적인 표준 출력을 제공하지만 모든 표현에 대한 적합성 제품군은 아닙니다. 생성된 문자열을 하나의 유용한 교환 형식으로 취급하고 이를 실제로 소유한 API 계약과 비교하세요.

따라서 스키마는 파서를 정확하게 반영하는 경우에만 정규식 또는 형식 유형을 게시해야 합니다. 예제만으로도 유용하지만 명시적인 거부 사례는 모호성에 가깝습니다.

광범위한 날짜 표준과 좁은 API 문법은 서로 바꿔 사용할 수 없습니다.

생성된 양식에는 달력 날짜, `T`, 밀리초 단위의 시간 및 후행 Z가 포함됩니다. 구현에서는 UI에서 이를 ISO 8601(UTC)라고 부릅니다. 입력은 명시적인 오프셋과 로컬 선택기의 영역 없는 날짜-시간 형태를 포함하여 JavaScript Date가 읽는 내용을 허용합니다.

해당 동작은 완전한 표준 파서보다 훨씬 더 범위가 좁습니다. 주 날짜, 간격, 기간 및 감소된 정밀도에는 저장소 테스트가 없습니다. 따라서 하나의 브라우저 Date에서 허용하는 문자열은 언어 전반에 걸쳐 보장되지 않으며 거부된 특수 형식이 다른 곳에서 해당 문자열의 지위를 반증하지 않습니다.

출력의 고정 밀리초 정밀도는 형식 선택이며 소스가 밀리초를 측정했다는 증거는 아닙니다. 날짜는 전체 초 값을 수신했지만 여전히 `.000`을 인쇄합니다.

ToolAcre는 하나의 ISO 모양 양식을 내보냅니다. 전체 ISO 8601 표준을 검증하지 않습니다.

통합 문서는 RFC 3339, 해당 연도 및 필수 오프셋 규칙을 특징으로 합니다. 소스 세트에는 RFC 텍스트나 전용 파서가 없으므로 해당 세부 사항은 주장되지 않습니다. 저작 계약에서는 제목을 기억해 인용하는 대신 지원되지 않는 정밀도를 남겨두도록 요구합니다.

API가 RFC 3339을 의미하는 경우 스키마에 이름을 지정하고 실제 사양에 기반한 구현에 대해 테스트하세요. ToolAcre는 비교를 위해 알려진 시대를 UTC ISO 출력에 연결할 수 있지만 임의의 입력이 해당 프로필을 충족하는지 인증할 수는 없습니다.

이는 편집 및 엔지니어링 보호 장치입니다. 표준 프로필은 정확한 계약이며 텍스트 없이 이를 다른 말로 표현하면 문서의 요구 사항이 변경될 위험이 있습니다.

RFC 3339 요구 사항에는 이 저장소에 없는 외부 표준 소스가 필요합니다.

대체 구분 기호, 소문자 지정자 및 `−00:00`에 대한 주장은 정확한 표준 언어에 따라 다릅니다. 여기서는 생략합니다. 변환기의 자체 구역 감지기는 후행 Z 또는 숫자 `±HH:MM`을 인식하고 구역 없는 날짜 시간을 로컬로 플래그 지정합니다. 그것이 우리가 확인할 수 있는 경계입니다.

명시적으로 허용된 예시와 거부 사례를 바탕으로 API 유효성 검사를 구축합니다. JavaScript Date의 편의 구문 분석기에서 권한을 추론하지 마세요. 허용 브라우저는 엄격한 서버가 올바르게 거부하는 입력을 정규화하여 수동 테스트 중에 상호 운용성 결함을 숨길 수 있습니다.

전용 표준 인식 파서는 구조화된 오류 이유를 반환해야 합니다. 날짜가 광범위한 입력을 정규화하도록 하면 API 유효성 검사 버그가 나중에 플랫폼 간 불일치로 바뀔 수 있습니다.

특정 구분 기호 및 알 수 없는 오프셋 규칙은 표준 텍스트 없이 생략됩니다.

Epoch 값은 단위와 원점이 고정되면 산술 및 순서를 간결하게 만듭니다. 텍스트 날짜-시간은 UTC 또는 오프셋 판독값을 사람들에게 표시하고 해당 지정자를 전송 중에 유지합니다. 많은 API는 JavaScript 정수 또는 단위 모호성을 피하기 위해 하나의 표준 문자열을 선택합니다.

API가 두 가지를 모두 전달하는 경우 어느 필드가 신뢰할 수 있고 테스트 동의인지 정의하십시오. 새로운 시대 옆에 오래된 형식의 문자열은 둘 중 하나보다 더 나쁩니다. ToolAcre는 정수를 변환하고 생성된 ISO 값을 확인하여 쌍을 비교할 수 있지만 일관성 적용은 생산자에게 속합니다.

작업 예: 1개의 인스턴스, 4개의 표현 — 에포크 초, 에포크 밀리초, UTC의 RFC 3339 문자열 및 로컬 오프셋이 있는 문자열

인스턴트 `2025-02-03T10:22:00.000Z`을(를) 사용하세요. 해당 신기원의 형태는 1,738,578,120초와 1,738,578,120,000밀리초입니다. 명시적 오프셋 판독값은 `2025-02-03T12:22:00+02:00`입니다. ToolAcre에서 구문 분석하면 동일한 시대와 표준 UTC ISO 행이 반환됩니다.

저장소에서 확인할 수 있는 네 가지 표현은 초, 밀리초, toISOString 출력 및 날짜 구문 분석된 숫자 오프셋 문자열입니다. 이 예에서는 모든 외부 파서가 동일한 분수 정밀도 또는 오프셋 구문을 허용한다고 주장하지 않습니다. 배송하기 전에 API 자체 검증을 실행하세요.

기록된 시계에서 +02:00 오프셋을 빼면 10:22 UTC가 생성됩니다. 완전한 표준 문법을 일반화하지 않고도 이 특정 입력을 테스트하는 데는 이러한 단순한 동등성만으로도 충분합니다.

작업된 예: 이 저장소가 확인할 수 있는 네 가지 형식 중 하나의 인스턴스

HTTP 헤더와 이메일 날짜는 여기에 구현되지 않은 텍스트 계약을 사용합니다. ToolAcre는 해당 프로토콜의 형식을 지정하지 않으며 ISO 출력을 대체할 수 있다고 약속하지도 않습니다. 타임스탬프의 순간은 동일할 수 있지만 필요한 연결 표현은 다릅니다.

신뢰할 수 있는 사양에서 복사된 고정 장치를 사용하여 전용 어댑터에서 프로토콜 직렬화를 유지합니다. 에포크 변환을 사용하여 기본 순간을 확인한 다음 문법을 별도로 테스트하세요. 이렇게 하면 달력에 맞는 값이 구문상 잘못된 봉투에서 검토를 통과하는 것을 방지할 수 있습니다.

전용 어댑터는 누락되었거나 알 수 없는 오프셋이 도메인 의미를 전달하는지 여부도 유지해야 합니다. 모든 텍스트 날짜를 지역적 가정으로 단순화하면 해당 정보가 파괴될 수 있습니다.

다른 텍스트 프로토콜은 변환기 외부에 남아 있습니다.

넓은 레이블에 의존하는 대신 API에서 허용하는 좁은 형식을 지정하세요. 이 도구의 경우 재현 가능한 가장 안전한 출력은 `toISOString()`에서 반환된 UTC ISO 문자열이며 가장 안전한 숫자 입력에는 명시적인 초 또는 밀리초 계약이 포함됩니다.

ToolAcre는 이러한 양식을 연결하고 가정을 보고합니다. 모든 ISO 8601 또는 RFC 3339 예외 사례를 판결하지는 않습니다. 문법, 단위 및 영역 지정자의 명확한 소유권은 과소 지정 필드에 친숙한 표준 이름을 첨부하지 않고 타임스탬프를 이식 가능하게 만드는 것입니다.

정확한 계약을 통해 클라이언트는 유용한 메시지를 통해 조기에 실패할 수 있습니다. 광범위한 레이블은 불일치를 런타임으로 밀어넣고, 그렇지 않으면 올바른 두 파서가 서로 다른 하위 집합을 선택할 수 있습니다.