한국어

개발자 도구 · 구문 변환기

TOML에는 기본 날짜-시간 유형이 있고 JSON에는 없는 이유(RFC 3339)

· 배경

toml JSON 타임스탬프

영역 발명 없이 인용된 JSON 문자열로 축소되는 4개의 TOML 시간 값
원본 ToolAcre 벡터 일러스트레이션

TOML는 이 그룹에서 RFC 3339에 의해 정의된 최고 수준의 날짜 및 시간을 갖는 유일한 형식입니다. 이 게시물에서는 네 가지 TOML 날짜-시간 종류, JSON에 고의로 날짜-시간 종류가 없는 이유 및 변환이 이들과 어떤 관련이 있는지 설명합니다.

문자열이 된 날짜 — 출시 날짜가 있는 TOML 구성, JSON로 변환되고 텍스트로 축소됨

`1979-05-27`과 같은 TOML 현지 날짜는 JSON 문자열 `"1979-05-27"`이 됩니다. 달력 문자는 유지되지만 기본 TOML 유형은 유지되지 않습니다. JSON를 다시 변환하면 날짜 토큰이 아닌 따옴표 붙은 문자열이 기록되고 ToolAcre는 첫 번째 변환 시 경고합니다.

이는 선택한 일반 JSON 값에서 피할 수 없는 경계입니다. 무손실 왕복을 호출하면 보존된 텍스트와 보존된 유형이 혼동됩니다. 경고는 경로와 임시 종류를 모두 지정하므로 검토자가 문자열이 다운스트림으로 허용되는지 여부를 결정할 수 있습니다.

JSON에 날짜 유형이 없는 이유 — Crockford의 미니멀리즘, ISO 8601 문자열 규칙 및 공백을 메우기 위해 경쟁하는 밀리초 이후 시간 규칙

JSON 여기에서 구문 분석하면 null, 부울, 숫자, 문자열, 배열 및 개체가 생성됩니다. Date 객체를 생성하지 않습니다. 저장소는 구현 사실을 증명하지만 JSON의 미니멀리즘이나 경쟁 업계 규칙에 대한 역사적 설명을 제공하지 않습니다.

애플리케이션은 합의에 따라 ISO와 유사한 문자열이나 시대 번호를 채택할 수 있지만 이는 JSON에 계층화된 규칙입니다. 구문 변환기는 임의의 텍스트에서 구문을 추론하지 않으며 TOML 시간 값을 에포크 산술로 변환하지 않습니다.

JSON에는 이 변환기에 기본 날짜 유형이 없습니다. 원산지 근거가 저장소 증거 외부에 있음

TOML는 Z 또는 숫자 오프셋이 있는 오프셋 날짜-시간, 영역이 없는 현지 날짜-시간, 현지 날짜 및 현지 시간의 네 가지 종류를 노출합니다. smol-toml은 이를 종류 메타데이터를 전달하는 날짜와 유사한 객체로 나타냅니다. ToolAcre는 정규화하기 전에 각각을 식별합니다.

구별은 심각한 실수를 방지합니다. 현지 시간은 자동으로 UTC로 할당되지 않으며 현지 날짜-시간은 구역 간에 이동되지 않습니다. 없는 오프셋은 JSON 문자열에 없는 상태로 유지됩니다.

RFC 3339 기반 — 공백 구분 기호 허용을 포함하여 TOML에서 빌린 ISO 8601의 프로필

노멀라이저는 파서 값의 ISO 포맷터를 호출하고 합성 `.000` 부분만 제거합니다. 의미 있는 소수 초와 소스 지향 로컬 대 오프셋 형식을 유지합니다. 코드에서는 이를 RFC 3339 텍스트로 설명하지만 기사에서는 테스트된 출력 이상의 구분 기호 허용치와 같은 사양 조항을 만들지 않습니다.

오프셋 예는 이 레이어에 의해 범용 Z 값으로 변환되지 않고 날짜-시간 텍스트로 유지됩니다. 이는 작성된 표현의 변경을 방지하고 이를 소유한 애플리케이션에 대한 시간적 해석을 유지합니다.

ToolAcre는 전체 RFC 3339 규정 준수 세부 사항을 주장하지 않고 소스 지향 임시 텍스트를 보존합니다.

모든 임시 값은 문자열이 되며 경고에는 이 변환 모델에서 JSON, YAML 및 XML에 날짜 유형이 없다는 내용이 표시됩니다. 오프셋은 의도적으로 삭제되지 않으며 로컬 값은 오프셋을 얻지 않습니다. 손실된 정보는 TOML 유형 범주 자체입니다.

역변환 시 작성자에 날짜/시간을 복원하라는 표시가 없기 때문에 문자열이 인용됩니다. 임의의 날짜 표시 문자열을 날짜로 다시 구문 분석하면 일반 식별자나 레이블이 잘못 입력되고 JSON에서 공유되지 않는 규칙이 만들어집니다.

변환기는 로컬 대 오프셋 철자를 유지한 다음 기본 TOML 유형을 잃습니다.

`odt = 1979-05-27T07:32:00Z`, `ldt = 1979-05-27T07:32:00`, `ld = 1979-05-27` 및 `lt = 07:32:00`을(를) 사용하세요. JSON에는 해당 철자가 포함된 4개의 문자열이 포함되어 있습니다. 경고에는 오프셋 날짜-시간, 현지 날짜-시간, 현지 날짜 및 현지 시간 경로가 나열됩니다.

JSON을(를) 다시 TOML로 변환합니다. 각 값은 인용되어 있습니다. 분수 `00.500Z`는 분수로 유지되지만 전체 초 값은 `.000`을 얻지 못합니다. 이는 실제로 지원되는 동작이며 보존된 텍스트와 손실된 유형을 명확하게 보여줍니다.

작동 예: 4개의 TOML 임시 종류가 모두 문자열이 되어 따옴표로 묶여 반환됩니다.

시간대 규칙 조회, 일광 절약 시간제 전환 및 에포크 변환은 이 경로의 일부가 아닙니다. 영역이 없는 현지 날짜-시간은 추가 정보 없이는 하나의 고유한 순간이 될 수 없습니다. Unix 타임스탬프 변환기는 다른 계약에 따라 알려진 순간을 처리합니다.

모든 결과 문자열을 JavaScript Date에 제공하지 말고 동등한 의미를 가정하십시오. 현지 날짜, 현지 시간 및 구역 없는 날짜 시간에는 애플리케이션 컨텍스트가 필요합니다. 마이그레이션을 통해 경고 및 필드 의미를 보존합니다.

요약: TOML는 날짜가 무엇인지 알고, JSON은 문자열이 무엇인지만 알고 있으며 구문 변환기 패널이 브라우저에서 그 차이를 어떻게 표시하는지 알고 있습니다.

TOML는 네 가지 시간 범주를 알고 있습니다. JSON은 여기서 문자열만 받습니다. ToolAcre는 철자를 신중하게 유지하고 영역 생성을 거부하지만 기본 유형이 사라지고 반환 시 자동으로 재구성될 수 없습니다.

모든 경고된 경로를 검토하고 시간적 의미가 유지되어야 하는 경우 애플리케이션 규칙을 정의합니다. 그러한 규칙이 없는 경우 인용된 왕복을 동등한 것으로 처리하는 대신 TOML을 신뢰할 수 있는 소스로 유지하십시오.

사운드 규칙은 어떤 문자열이 어떤 컨텍스트에서 다시 구문 분석될 수 있는지도 지정합니다. 오프셋 날짜-시간은 순간을 식별할 수 있지만 현지 날짜-시간, 날짜 또는 시간은 추가 규칙 없이는 식별할 수 없습니다. 이후 단계에서 TOML을 재구성하거나 작업을 예약해야 하는 경우 정규화된 문자열 옆에 원래 종류를 저장합니다. 그렇지 않으면 JSON이 표시 텍스트를 전달하고 있음을 수락하고 자동으로 범용 타임스탬프로 승격하지 마세요.