Italiano

Strumenti per sviluppatori · Convertitore di timestamp Unix

ISO 8601 vs RFC 3339: i due formati di data dietro le tue risposte API

· Sfondo

timestamp iso-8601 apis

Un ampio imbuto in formato data-ora che si restringe a un contratto API
Illustrazione vettoriale originale ToolAcre

La maggior parte delle API afferma di utilizzare ISO 8601 e in realtà utilizza RFC 3339, un profilo più rigoroso progettato per Internet. Questo post spiega i due documenti, le loro differenze e come si collegano agli interi epocali.

Il campo 'ISO 8601' che rifiuta ISO 8601 valido: una data settimanale o un valore a precisione ridotta inviato a un API che prevedeva RFC 3339

Un campo API descritto casualmente come "ISO 8601" può accettare solo una forma data-ora. L'invio di un'altra rappresentazione valida per gli standard può comunque fallire il suo parser. Il rimedio non è discutere dal nome ombrello; si tratta di documentare l'esatta grammatica dei fili con esempi e test di validazione.

ToolAcre contribuisce con un output canonico stabile da `Date.toISOString()`, ma non è una suite di conformità per ogni rappresentazione. Tratta la stringa generata come un utile modulo di scambio e confrontala con il contratto API che possiedi effettivamente.

Uno schema dovrebbe quindi pubblicare un'espressione regolare o un tipo formale solo se riflette accuratamente il parser. Gli esempi da soli sono utili, ma i casi di rifiuto esplicito chiudono l’ambiguità.

Uno standard di data ampio e una grammatica API ristretta non sono intercambiabili

Il modulo generato contiene la data del calendario, `T`, il tempo in millisecondi e la Z finale. L'implementazione lo chiama ISO 8601 (UTC) nell'interfaccia utente. L'input accetta ciò che legge JavaScript Date, incluso un offset esplicito e la forma data-ora senza zone del selettore locale.

Questo comportamento è molto più ristretto di un parser standard completo. Le date della settimana, gli intervalli, le durate e la precisione ridotta non hanno test del repository. Una stringa accettata da un browser Date non è quindi garantita in tutte le lingue e una forma specializzata rifiutata non smentisce la sua posizione altrove.

La precisione fissa in millisecondi dell'output è una scelta di formattazione, non una prova che la sorgente misurasse millisecondi. La data potrebbe aver ricevuto un valore di un secondo intero e continuare a stampare `.000`.

ToolAcre emette una forma a forma di ISO; non convalida l'intero standard ISO 8601

La cartella di lavoro caratterizzava RFC 3339, il suo anno e le regole di compensazione obbligatorie. Nel set di origine non esiste testo RFC o parser dedicato, quindi tali dettagli non vengono affermati. Il contratto di autore richiede di tralasciare la precisione non supportata piuttosto che citare un titolo a memoria.

Se il tuo API significa RFC 3339, assegnagli un nome nello schema e verificalo rispetto a un'implementazione basata sulle specifiche effettive. ToolAcre può collegare un'epoca conosciuta al suo output UTC ISO per il confronto, ma non può certificare che l'input arbitrario soddisfi quel profilo.

Si tratta di una salvaguardia editoriale e ingegneristica: i profili degli standard sono contratti precisi e parafrasarli senza il testo rischia di modificare i requisiti nella documentazione.

I requisiti RFC 3339 richiedono una fonte di standard esterni non presente in questo repository

Le affermazioni sui separatori alternativi, sui designatori minuscoli e su `−00:00` dipendono dal linguaggio degli standard esatti. Sono omessi qui. Il rilevatore di zona del convertitore riconosce la Z finale o il numero `±HH:MM` e contrassegna data e ora senza zona come locali; questo è il confine che possiamo verificare.

Crea la convalida API da esempi espliciti accettati e casi di rifiuto. Non dedurre l'autorizzazione dal parser di comodità di JavaScript Date. Un browser permissivo può normalizzare l'input che un server rigoroso rifiuta correttamente, nascondendo i difetti di interoperabilità durante i test manuali.

Un parser dedicato e sensibile agli standard dovrebbe restituire ragioni di errore strutturate. Lasciare che Date normalizzi un input ampio può trasformare un bug di convalida API in una discrepanza multipiattaforma successiva.

Le regole specifiche per il separatore e l'offset sconosciuto vengono omesse senza il testo degli standard

I valori dell'epoca rendono l'aritmetica e l'ordinamento compatti quando unità e origine sono fisse. Le date e gli orari testuali rendono visibile alle persone una lettura UTC o offset e preservano quel designatore durante il transito. Molte API scelgono una stringa canonica per evitare JavaScript ambiguità di numeri interi o unità.

Se un API li trasporta entrambi, definisci quale campo è autorevole e verifica l'accordo. Una stringa formattata obsoleta accanto a una nuova epoca è peggiore di entrambe da sole. ToolAcre può confrontare la coppia convertendo il numero intero e controllando il valore ISO generato, ma l'applicazione della coerenza appartiene al produttore.

Esempio realizzato: un istante, quattro rappresentazioni: secondi di epoca, millisecondi di epoca, una stringa RFC 3339 in UTC e una con un offset locale

Utilizza `2025-02-03T10:22:00.000Z` istantaneo. Le sue forme di epoca sono 1,738,578,120 secondi e 1,738,578,120,000 millisecondi. Una lettura con offset esplicito è `2025-02-03T12:22:00+02:00`; l'analisi in ToolAcre restituisce la stessa epoca e la stessa riga canonica UTC ISO.

Si tratta di quattro rappresentazioni verificabili dal repository: secondi, millisecondi, output toISOString e una stringa di offset numerico analizzata dalla data. L'esempio non afferma che ogni parser esterno accetta la stessa precisione frazionaria o sintassi di offset. Esegui la convalida di API prima della spedizione.

Sottraendo l'offset +02:00 dall'orologio scritto si ottiene 10:22 UTC. Questa semplice uguaglianza è sufficiente per testare questo particolare input senza generalizzare una grammatica standard completa.

Esempio realizzato: un istante nelle quattro forme che questo repository può verificare

Le intestazioni HTTP e le date di posta elettronica utilizzano contratti testuali non implementati qui. ToolAcre non formatta questi protocolli, né promette che il suo output ISO possa essere sostituito. L'istante di un timestamp può essere lo stesso mentre la rappresentazione del filo richiesta è diversa.

Mantieni la serializzazione del protocollo in adattatori dedicati con dispositivi copiati da specifiche autorevoli. Utilizza la conversione dell'epoca per verificare l'istante sottostante, quindi testa la grammatica separatamente. Ciò impedisce a un valore corretto del calendario di superare la revisione in una busta sintatticamente non valida.

L'adattatore dedicato dovrebbe inoltre preservare se l'offset mancante o sconosciuto ha un significato di dominio. Appiattire ogni data testuale in un presupposto locale può distruggere quell'informazione.

Altri protocolli testuali rimangono fuori dal convertitore

Specifica il formato ristretto accettato da API invece di fare affidamento su un'etichetta ampia. Per questo strumento, l'output riproducibile più sicuro è la stringa UTC ISO restituita da `toISOString()` e l'input numerico più sicuro include un contratto esplicito di secondi o millisecondi.

ToolAcre collega questi moduli e riporta i presupposti. Non giudica tutti i casi limite ISO 8601 o RFC 3339. La chiara proprietà della grammatica, dell'unità e del designatore di zona è ciò che rende portabili i timestamp, senza allegare un nome standard familiare a un campo sottospecificato.

Un contratto preciso consente ai clienti di fallire presto con messaggi utili. Un'etichetta ampia spinge il disaccordo in fase di esecuzione, dove due parser altrimenti corretti possono scegliere sottoinsiemi diversi.