Wie formatiere ich die aktuelle Zeit mit einem JJJJMMTTHHmmss-Format?

118

Ich versuche, die aktuelle Zeit mit diesem Format zu formatieren yyyyMMddHHmmss.

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

Das gibt aus:

yyyyMMddHHmmss

Irgendwelche Vorschläge?

sergserg
quelle
Hier ist ein Spielplatzbeispiel für die Funktionsweise der Datumsformatierung. Dies konvertiert sowohl Zeichenfolgen in Zeit als auch druckt eine Zeit in einem bestimmten Format aus. play.golang.org/p/qK6_9KNJNx
Nitesh

Antworten:

241

Verwenden

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

Da Go die folgenden Konstanten zum Formatieren des Datums verwendet, finden Sie hier

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
)
Krise
quelle
56
Eigentlich ist das Golang-Format sehr seltsam. Warum nicht den yyyymmddHHiiss-Stil verwenden, sondern den "" 2006/01/02/15/04/05 ", ich habe nicht den wahren Grund dafür
Kewin
11
Die Layoutzeichenfolge ist eine Darstellung des Zeitstempels vom 2. Januar 15:04:05 2006 MST. Eine einfache Möglichkeit, sich an diesen Wert zu erinnern, besteht darin, dass er in dieser Reihenfolge die Werte enthält (mit den obigen Elementen ausgerichtet): 1 2 3 4 5 6 -7 Von golang.org/src/time/example_test.go
Kakilangit
28
Mnemonische Technik für Menschen außerhalb der USA: Stellen Sie sich vor, was Sie am 2. Januar 2006, nur fünf Sekunden nach 15:04 Uhr, getan haben, aber stellen Sie sich vor, dass es in Burkina Faso (UTC -7) passiert. Wenn Sie das nächste Mal ein Datum formatieren müssen, denken Sie einfach an dieses besondere Ereignis (!)
Enrico
3
Ich kannte die sequentielle Mnemonik nicht, praktisch, aber komm schon, warum ist es nicht der 1. Februar ...
Silasdavis
4
Alles, woran ich mich erinnern muss, ist, das Datum in der Reihenfolge Monat-Tag-Jahr anzuordnen, dann die Zeit in die Mitte zu setzen und die Zeitzone nach dem Jahr zu setzen, und es wird super einfach, sich zu erinnern. Ordentlich. Hat jemand eine Mnemonik, um sich an die Reihenfolge dieser Mnemonik zu erinnern?
Joey Sabey
20

Diese Frage wird in der Google-Suche angezeigt, wenn Sie das "aktuelle Golang-Zeitformat" finden. Denken Sie also daran, dass Sie für alle Personen, die ein anderes Format verwenden möchten, jederzeit anrufen können:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Um beispielsweise die aktuelle Datumszeit als "JJJJ-MM-TTTHH: MM: SS" (z. B. 2019-01-22T12: 40: 55) abzurufen, können Sie diese Methoden mit fmt.Sprintf verwenden:

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

Denken Sie wie immer daran, dass Dokumente die beste Lernquelle sind: https://golang.org/pkg/time/

Luis Cabrera Benito
quelle
4

Das Zeitpaket in Golang enthält einige Methoden, die einen Blick wert sein könnten.

func (Zeit) Format

func (t Zeit) Format (Layoutzeichenfolge) Zeichenfolge Format gibt eine Textdarstellung des gemäß Layout formatierten Zeitwerts zurück, der das Format definiert, indem er zeigt, wie die Referenzzeit ist.

Mon Jan 2 15:04:05 -0700 MST 2006 würde angezeigt, wenn es der Wert wäre; es dient als Beispiel für die gewünschte Ausgabe. Die gleichen Anzeigeregeln werden dann auf den Zeitwert angewendet. Vordefinierte Layouts ANSIC, UnixDate, RFC3339 und andere beschreiben Standard- und praktische Darstellungen der Referenzzeit. Weitere Informationen zu den Formaten und der Definition der Referenzzeit finden Sie in der Dokumentation zu ANSIC und den anderen in diesem Paket definierten Konstanten.

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

Ich habe auch ein Beispiel für die Definition des Layouts gefunden ( 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)
    }
TheZelus
quelle
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)

gibt:

>> 2014-11-12 11:45:26.371 +0000 UTC
Cool.wen
quelle