Español

Herramientas de desarrollo · Convertidores de sintaxis

Por qué TOML tiene un tipo de fecha y hora nativo y JSON no (RFC 3339)

· Antecedentes

toml json marcas de tiempo

Cuatro TOML valores temporales que se reducen a cadenas JSON entre comillas sin invención de zona
Ilustración de vector original de ToolAcre

TOML es el único formato en este grupo con fechas y horas de primera clase, todas definidas por RFC 3339. Esta publicación explica los cuatro tipos de fecha y hora TOML, por qué JSON no tiene ninguno deliberadamente y qué tiene que ver una conversión con ellos.

La fecha que se convirtió en una cadena: una configuración TOML con una fecha de lanzamiento, convertida a JSON y reducida a texto.

Una fecha local TOML como `1979-05-27` se convierte en la cadena JSON `"1979-05-27"`. Los caracteres del calendario sobreviven, pero el tipo nativo TOML no. Al convertir ese JSON nuevamente, se escribe una cadena entrecomillada, no un token de fecha, y ToolAcre advierte en la primera conversión.

Este es un límite inevitable en el valor plano JSON elegido. Llamar al viaje de ida y vuelta sin pérdidas confundiría el texto preservado con el tipo preservado. La advertencia nombra tanto la ruta como el tipo temporal para que los revisores puedan decidir si una cadena es aceptable en el futuro.

Por qué JSON no tiene tipo de fecha: el minimalismo de Crockford, la convención de cadenas ISO 8601 y la convención de milisegundos desde época que compiten para llenar el vacío

JSON el análisis aquí produce valores nulos, booleanos, números, cadenas, matrices y objetos; no produce objetos de fecha. El repositorio prueba ese hecho de implementación, pero no proporciona explicaciones históricas para el minimalismo de JSON o las convenciones de la industria en competencia.

Las aplicaciones pueden adoptar cadenas similares a ISO o números de época por acuerdo, pero esas son convenciones superpuestas en JSON. Los convertidores de sintaxis no infieren uno a partir de texto arbitrario y no convierten TOML valores temporales en aritmética de época.

JSON no tiene ningún tipo de fecha nativa en este convertidor; la justificación del origen está fuera de la evidencia del repositorio

TOML expone cuatro tipos: fecha-hora compensada con una Z o compensación numérica, fecha-hora local sin zona, fecha local y hora local. smol-toml los representa como objetos con forma de fecha que contienen metadatos amables; ToolAcre identifica cada uno antes de normalizarlo.

La distinción evita un error grave. A una hora local no se le asigna UTC de forma silenciosa y una fecha y hora local no se mueve entre zonas. Su desplazamiento ausente permanece ausente en la cadena JSON.

RFC 3339 como base: el perfil de ISO 8601 que TOML toma prestado, incluida la asignación del separador de espacio

El normalizador llama al formateador ISO del valor del analizador y elimina solo una fracción sintética `.000`. Conserva fracciones de segundo significativas y forma local versus compensación orientada a la fuente. El código describe esto como texto RFC 3339, pero el artículo no inventa cláusulas de especificación como tolerancias de separación más allá de la salida probada.

Un ejemplo de desplazamiento sigue siendo texto de fecha y hora en lugar de ser convertido a un valor Z universal por esta capa. Que evita cambiar la representación escrita y mantiene la interpretación temporal para la aplicación que la posee.

ToolAcre conserva el texto temporal orientado al código fuente sin afirmar todos los detalles de cumplimiento del RFC 3339

Cada valor temporal se convierte en una cadena y las advertencias dicen que JSON, YAML y XML no tienen ningún tipo de fecha en este modelo de conversión. Las compensaciones no se eliminan deliberadamente y los valores locales no las adquieren. La información perdida es la propia categoría de tipo TOML.

En la conversión inversa, la cadena se cita porque el escritor no tiene ningún marcador que le indique restaurar una fecha y hora. Volver a analizar cadenas arbitrarias que parezcan fechas como fechas escribiría incorrectamente identificadores o etiquetas comunes e inventaría una convención no compartida por JSON.

El convertidor conserva la ortografía local versus la ortografía compensada, luego pierde el tipo nativo TOML

Utilice `odt = 1979-05-27T07:32:00Z`, `ldt = 1979-05-27T07:32:00`, `ld = 1979-05-27` y `lt = 07:32:00`. JSON contiene cuatro cadenas con esa ortografía. La advertencia enumera las rutas de fecha y hora compensadas, fecha y hora local, fecha local y hora local.

Convierta el JSON nuevamente a TOML. Se cita cada valor. Un `00.500Z` fraccionario permanece fraccionario, mientras que un valor de segundo completo no gana `.000`. Este es el comportamiento real admitido y demuestra claramente el texto conservado versus el tipo perdido.

Ejemplo resuelto: los cuatro tipos temporales TOML se convierten en cadenas y se devuelven entre comillas

La búsqueda de reglas de zona horaria, las transiciones de horario de verano y la conversión de época no forman parte de esta ruta. Una fecha-hora local sin zona no puede convertirse en un instante único sin más información. El conversor de marcas de tiempo de Unix aborda instantes conocidos bajo un contrato diferente.

No introduzca cada cadena resultante en JavaScript Date y asuma un significado equivalente. La fecha local, la hora local y la fecha y hora sin zona requieren contexto de aplicación. Preservar la semántica de campos y advertencias mediante la migración.

Conclusión: TOML sabe qué es una fecha, JSON solo sabe qué es una cadena y cómo el panel de convertidores de sintaxis muestra esa diferencia en su navegador.

TOML conoce cuatro categorías temporales; JSON recibe solo cadenas aquí. ToolAcre conserva la ortografía cuidadosamente y se niega a inventar una zona, pero el tipo nativo desapareció y no se puede reconstruir automáticamente a su regreso.

Revise cada ruta advertida y defina una convención de aplicación cuando la semántica temporal deba sobrevivir. Si no existe tal convención, mantenga TOML como fuente autorizada en lugar de tratar un viaje de ida y vuelta citado como equivalente.

Una convención sólida también nombra qué cadenas pueden analizarse nuevamente y bajo qué contexto. Una fecha-hora compensada puede identificar un instante, mientras que una fecha-hora, fecha u hora local no puede hacerlo sin reglas adicionales. Almacene el tipo original junto a la cadena normalizada cuando una etapa posterior necesite reconstruir TOML o programar el trabajo. De lo contrario, acepte que JSON contiene texto para mostrar y evite promocionarlo silenciosamente a una marca de tiempo universal.