Wie man eine DatumsZeichenkette in Go parst

Suraj Joshi 11 Dezember 2023
  1. Repräsentation von Datum und Zeit in Go
  2. DatumsZeichenkette in Go parsen
Wie man eine DatumsZeichenkette in Go parst

Das Parsen von Datum ist eine der häufigsten Aufgaben in der Programmierwelt. Go verwendet ein Standarddatum, im Gegensatz zu anderen Programmiersprachen, die Codes verwenden, um Teile einer Datums-/ZeitZeichenkettendarstellung darzustellen. Das Parsen in Go erfolgt mit Hilfe der Funktionen Parse und Format aus dem Paket time.

Repräsentation von Datum und Zeit in Go

Um das Datum in Go zu analysieren, verwenden wir etwas, das wir layout nennen. Es gibt eine Standardzeit in Go, die wir uns beim Parsen von Daten in Go merken müssen:

Mon Jan 2 15:04:05 MST 2006

Es ist der 2. Januar 2006, 15:04:05 PM von 2006, UTC-0700.

DatumsZeichenkette in Go parsen

Um eine Datumszeichenkette zu parsen, übergeben wir dieses Layout an die Funktion time.Parse. Wir benutzen Echtzeit als Format, ohne das Datum durch Buchstaben in der Funktion parse zu spezifizieren, was die Funktion parse recht interessant macht.

Die time.Parse-Funktion nimmt ein Layout an, das aus einem Zeitformat-Platzhalter als erstes Argument und einer tatsächlich formatierten Zeichenkette, die die Zeit repräsentiert, als zweites Argument besteht.

package main

import (
    "fmt"
    "time"
)

func main() {
    timeT, _ := time.Parse("2006-01-02", "2020-04-14")
    fmt.Println(timeT)

    timeT, _ = time.Parse("06-01-02", "20-04-14")
    fmt.Println(timeT)

    timeT, _ = time.Parse("2006-Jan-02", "2020-Apr-14")
    fmt.Println(timeT)

    timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05", "2020-Apr-14 Tuesday 23:19:25")
    fmt.Println(timeT)

    timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05 PM MST -07:00", "2020-Apr-14 Tuesday 11:19:25 PM IST +05:30")
    fmt.Println(timeT)
}

Ausgabe:

2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
0001-01-01 00:00:00 +0000 UTC
2020-04-14 23:19:25 +0530 IST

Go hat einige vordefinierte Zeit-Layout-Konstanten in seinem Paket.

Konstante Gestaltung
ANSIC "Mon Jan _2 15:04:05 2006"
UnixDate "Mon Jan _2 15:04:05 MST 2006"
RubyDate "Mon Jan 02 15:04:05 -0700 2006"
RFC822 "02 Jan 06 15:04 MST"
RFC822Z "02 Jan 06 15:04 -0700"
RFC850 "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z "Mon, 02 Jan 2006 15:04:05 -0700"
RFC3339 "2006-01-02T15:04:05Z07:00"
RFC3339Nano "2006-01-02T15:04:05.999999999Z07:00"
Stamp "3:04PM"
StampMilli "Jan _2 15:04:05.000"
StampMicro "Jan _2 15:04:05.000000"
StampNano "Jan _2 15:04:05.000000000"

Wir könnten die vordefinierte Konstante wie oben anstelle der Layout-Zeichenkette verwenden, um die Datum-Uhrzeit zu analysieren.

package main

import (
    "fmt"
    "time"
)

func main() {
    timeT, _ := time.Parse(time.RFC3339, "2020-04-15T13:45:26Z")
    fmt.Println(timeT)
}

Ausgabe:

2020-04-15 13:45:26 +0000 UTC

Wenn wir einen Typ time.Time haben, verwenden wir die Funktion Format, um ihn in einen string zu konvertieren.

package main

import (
    "fmt"
    "time"
)

func main() {
    input := "2020-04-14"
    layout := "2006-01-02"
    t, _ := time.Parse(layout, input)
    fmt.Println(t)
    fmt.Println(t.Format("02-Jan-2006"))

}

Ausgabe:

2020-04-14 00:00:00 +0000 UTC
14-Apr-2020
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Go String