Come formattare l'ora corrente utilizzando un formato aaaaMMggHHmmss?


119

Sto provando a formattare l'ora corrente utilizzando questo formato yyyyMMddHHmmss.

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))

Questo sta producendo:

yyyyMMddHHmmss

Eventuali suggerimenti?


Ecco un esempio di gioco di come funziona la formattazione della data. Questo è sia la conversione di una stringa in tempo che la stampa di un'ora in un formato specifico. play.golang.org/p/qK6_9KNJNx
Nitesh

Risposte:


242

Uso

fmt.Println(t.Format("20060102150405"))

poiché Go utilizza le seguenti costanti per formattare la data, fare riferimento qui

const (
    stdLongMonth      = "January"
    stdMonth          = "Jan"
    stdNumMonth       = "1"
    stdZeroMonth      = "01"
    stdLongWeekDay    = "Monday"
    stdWeekDay        = "Mon"
    stdDay            = "2"
    stdUnderDay       = "_2"
    stdZeroDay        = "02"
    stdHour           = "15"
    stdHour12         = "3"
    stdZeroHour12     = "03"
    stdMinute         = "4"
    stdZeroMinute     = "04"
    stdSecond         = "5"
    stdZeroSecond     = "05"
    stdLongYear       = "2006"
    stdYear           = "06"
    stdPM             = "PM"
    stdpm             = "pm"
    stdTZ             = "MST"
    stdISO8601TZ      = "Z0700"  // prints Z for UTC
    stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
    stdNumTZ          = "-0700"  // always numeric
    stdNumShortTZ     = "-07"    // always numeric
    stdNumColonTZ     = "-07:00" // always numeric
)

56
Acturally il formato golang è molto strano. perché non usare lo stile aaaammggHHiiss, ma usare "" 2006/01/02/15/04/05 ", non ho capito il vero motivo
Kewin

11
La stringa di layout è una rappresentazione del timestamp, 2 gennaio 15:04:05 MST 2006. Un modo semplice per ricordare questo valore è che contiene, quando presentato in questo ordine, i valori (allineati con gli elementi sopra): 1 2 3 4 5 6-7
kakilangit

28
Tecnica mnemonica per chi è fuori dagli Stati Uniti: immagina cosa stavi facendo il 2 gennaio 2006, appena cinque secondi dopo le 15:04, ma immagina che succeda in Burkina Faso (UTC -7). La prossima volta che devi formattare una data, ricorda questo particolare evento (!)
Enrico

3
Non conoscevo lo mnemonico sequenziale, comodo, ma dai perché non è il 1 febbraio ...
silasdavis

4
Quindi tutto quello che devo ricordare è allineare la data in ordine mese-giorno-anno, quindi inserire l'ora al centro e inserire il fuso orario dopo l'anno, e diventa super facile da ricordare. Neat. Qualcuno ha un mnemonico per ricordare l'ordine di questo mnemonico ..?
Joey Sabey

20

Questa domanda si trova in cima alla ricerca su Google quando trovi "golang current time format" quindi, per tutte le persone che desiderano utilizzare un altro formato, ricorda che puoi sempre chiamare:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Ad esempio, per ottenere l'ora della data corrente come "AAAA-MM-GGTHH: MM: SS" (ad esempio 2019-01-22T12: 40: 55) puoi utilizzare questi metodi con fmt.Sprintf:

t := time.Now()
formatted := fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

Come sempre, ricorda che i documenti sono la migliore fonte di apprendimento: https://golang.org/pkg/time/


4

Il pacchetto Time in Golang ha alcuni metodi che potrebbero valere la pena cercare.

func (ora) Formato

func (t Time) Format (stringa di layout) string Format restituisce una rappresentazione testuale del valore dell'ora formattato in base al layout, che definisce il formato mostrando come l'ora di riferimento,

Mon Jan 2 15:04:05 -0700 MST 2006 sarebbe visualizzato se fosse il valore; serve come esempio dell'output desiderato. Le stesse regole di visualizzazione verranno quindi applicate al valore temporale. I layout predefiniti ANSIC, UnixDate, RFC3339 e altri descrivono rappresentazioni standard e convenienti dell'ora di riferimento. Per maggiori informazioni sui formati e la definizione del tempo di riferimento, vedere la documentazione per ANSIC e le altre costanti definite da questo pacchetto.

Fonte ( http://golang.org/pkg/time/#Time.Format )

Ho anche trovato un esempio di definizione del layout ( http://golang.org/src/pkg/time/example_test.go )

func ExampleTime_Format() {
        // layout shows by example how the reference time should be represented.
        const layout = "Jan 2, 2006 at 3:04pm (MST)"
        t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
        fmt.Println(t.Format(layout))
        fmt.Println(t.UTC().Format(layout))
        // Output:
    // Nov 10, 2009 at 3:00pm (PST)
        // Nov 10, 2009 at 11:00pm (UTC)
    }

4
import("time")

layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

dà:

>> 2014-11-12 11:45:26.371 +0000 UTC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.