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 is a backend software engineer at Matrice.ai.
LinkedIn