MiServe DevTools

I tuoi adesivi

Fissa qui gli strumenti. Restano salvati in questo browser.

Convertitore formati data Go e strftime

Scrivi un layout di data Go e guarda l'ora attuale formattata con quel layout, converti tra layout Go e strftime, e consulta i token dell'orario di riferimento.

Modifica uno dei due campi e l'altro si aggiorna.

L'ora attuale in questo layout

Layout predefiniti
Token dell'orario di riferimento

L'orario di riferimento di Go è Mon Jan 2 15:04:05 MST 2006. Se lo scrivi come 01/02 03:04:05PM '06 -0700, le sue parti vanno da 1 a 7: mese, giorno, ora, minuto, secondo, anno e offset del fuso. Seleziona un token per inserirlo nel layout alla posizione del cursore.

Token GoSignificatostrftimeAdesso
Anno, quattro cifre %Y
Anno, ultime due cifre %y
Mese in numero, due cifre %m
Mese in numero, senza zero iniziale %-m
Nome del mese, abbreviato %b
Nome del mese, per esteso %B
Giorno del mese, due cifre %d
Giorno del mese, senza zero iniziale %-d
Giorno del mese, con uno spazio come riempimento %e
Giorno dell'anno, tre cifre %j
Ora nel formato 24 ore, due cifre %H
Ora nel formato 12 ore, due cifre %I
Ora nel formato 12 ore, senza zero iniziale %-I
Minuto, due cifre %M
Secondo, due cifre %S
AM o PM %p
Nome del giorno della settimana, abbreviato %a
Nome del giorno della settimana, per esteso %A
Abbreviazione del fuso orario %Z
Offset UTC in ore e minuti, senza due punti %z
Offset UTC in ore e minuti, con i due punti %:z
Offset UTC con i due punti, o la lettera Z quando l'offset è zero —
Frazione di secondo con un numero fisso di cifre, una per ogni zero .%L
Frazione di secondo senza zeri finali, al massimo una cifra per ogni nove —

Funziona nel tuo browser con WebAssembly. Nulla di ciò che incolli viene caricato.

Informazioni su questo strumento

Un layout è un esempio, non un pattern

La maggior parte dei linguaggi descrive un formato di data con segnaposto come %Y-%m-%d o YYYY-MM-DD. Go fa diversamente: scrivi come deve apparire un momento preciso, l'orario di riferimento, e time.Format stampa qualsiasi altro orario allo stesso modo. L'orario di riferimento è Mon Jan 2 15:04:05 MST 2006.

I valori sono stati scelti in modo da crescere in sequenza se scritti nell'ordine americano 01/02 03:04:05PM '06 -0700: mese 1, giorno 2, ora 3 (o 15 nel formato 24 ore), minuto 4, secondo 5, anno 6 e un offset del fuso di meno 7 ore. Ogni valore può indicare una sola cosa, ed è così che Go sa che 01 è un mese e 04 un minuto.

Errori comuni

Siccome 01 è il mese e 02 il giorno, una data con il giorno prima del mese è 02/01/2006, che sembra sbagliata a chi è abituato all'ordine di riferimento. Un layout scritto secondo altre abitudini non dà nemmeno errore. Go stampa come testo letterale ciò che non riconosce, quindi YYYY-MM-DD esce invariato, e legge come token ogni cifra che riconosce, quindi 2021-12-25 esce come una serie di numeri senza senso.

Non c'è modo di fare l'escape di un token. Il testo che ne contiene uno per caso viene sostituito, quindi un Jan o un Mon letterale, o una cifra come 2, in un layout diventano un valore. Aggiungi quel testo fuori dal layout.

Z07:00 stampa Z per UTC e un offset numerico negli altri casi, come richiede RFC 3339, mentre -07:00 stampa sempre il numero. Per le frazioni di secondo, .000 mantiene gli zeri finali e .999 li rimuove. I nomi dei mesi e dei giorni della settimana sono sempre in inglese.

Come funzionano l'anteprima e la conversione

L'anteprima è prodotta dal time.Format di Go, compilato in WebAssembly ed eseguito nel tuo browser, quindi mostra ciò che un programma Go stampa per lo stesso istante e lo stesso offset. Il browser fornisce l'ora attuale, l'offset UTC del tuo fuso orario e la sua abbreviazione. Quando il browser non ha un'abbreviazione per il tuo fuso, se ne usa una numerica come +03, che è anche ciò che Go stampa per i fusi senza lettere proprie. Per alcuni fusi l'abbreviazione del browser è diversa da quella del database dei fusi orari che legge Go.

I due formati non coprono le stesse cose. strftime non ha una direttiva che si comporti come Z07:00, e Go non ha token per i numeri di settimana (%U, %W, %V), per il giorno della settimana in numero (%u, %w) o per i secondi dall'epoch (%s). Il convertitore copia queste parti invariate e le indica sotto il campo. Indica anche il testo letterale di un formato strftime che Go leggerebbe come token, perché un layout non può contenerlo.

Alcune direttive lato strftime sono estensioni che non tutte le implementazioni hanno: il flag che toglie il riempimento (%-d), l'offset con i due punti (%:z) e le direttive per le frazioni %L, %f e %N. Controlla la documentazione del linguaggio verso cui stai convertendo.

Domande

Perché Go usa 2006-01-02 15:04:05 invece di YYYY-MM-DD?

I layout di Go mostrano come va stampato un orario di riferimento fisso, Mon Jan 2 15:04:05 MST 2006. Le sue parti sono i numeri da 1 a 7 nell'ordine mese, giorno, ora, minuto, secondo, anno, offset del fuso, quindi ogni numero identifica una parte della data senza bisogno di una sintassi con segnaposto.

Qual è il layout Go per un timestamp ISO 8601 o RFC 3339?

Usa 2006-01-02T15:04:05Z07:00, che è la costante time.RFC3339. Per le frazioni di secondo usa time.RFC3339Nano, cioè 2006-01-02T15:04:05.999999999Z07:00.

Come stampo i millisecondi in un layout Go?

Aggiungi .000 dopo i secondi, come in 15:04:05.000. Ogni zero è una cifra, quindi .000000 dà i microsecondi. Usa i nove al posto degli zeri, come in .999, per eliminare gli zeri finali.

Come ottengo il formato 24 ore in un layout Go?

Scrivi l'ora come 15. I valori 03 e 3 indicano il formato 12 ore e di solito si combinano con PM, che stampa AM o PM.

Altri strumenti in Tempo