Konstruieren von Zeit.Zeit mit Zeitzonenversatz
Im Bereich der Zeitmessung ist es für anspruchsvolle Anwendungen von entscheidender Bedeutung, Zeitzonen genau zu handhaben. Dabei geht es darum, time.Time-Instanzen zu konstruieren, die bestimmte Zeitzonen-Offsets einbeziehen.
Nehmen wir das Beispiel eines Apache-Protokolleintrags:
[07/Mar/2004:16:47:46 -0800]
Nach erfolgreicher Analyse der einzelnen Komponenten (Jahr, Monat, Tag , Stunde, Minute, Sekunde und Zeitzone) besteht der nächste Schritt darin, eine time.Time-Instanz zu erstellen, die die Zeitzone „-0800“ enthält Offset.
Time.FixedZone() verwenden
Zu diesem Zweck können Sie time.FixedZone() verwenden. Mit dieser Funktion können Sie einen time.Location mit einem festen Offset erstellen. Hier ist ein Beispiel:
loc := time.FixedZone("myzone", -8*3600) nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, loc) fmt.Println(nativeDate)
Ausgabe:
2019-02-06 00:00:00 -0800 myzone
Using time.Parse()
If the Da der Zeitzonenoffset als Zeichenfolge verfügbar ist, können Sie ihn mit time.Parse() interpretieren. Verwenden Sie eine Layoutzeichenfolge, die ausschließlich den Referenzzonenversatz enthält:
t, err := time.Parse("-0700", "-0800") fmt.Println(t, err)
Ausgabe:
0000-01-01 00:00:00 -0800 -0800 <nil>
Wie aus der Ausgabe hervorgeht, hat die resultierende Zeit.Zeit ein Zonenversatz von -0800 Stunden.
Abgeschlossen Beispiel
Unter Einbeziehung der oben genannten Techniken kann das ursprüngliche Beispiel wie folgt umgeschrieben werden:
t, err := time.Parse("-0700", "-0800") if err != nil { panic(err) } nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, t.Location()) fmt.Println(nativeDate)
Ausgabe:
2019-02-06 00:00:00 -0800 -0800
Das obige ist der detaillierte Inhalt vonWie konstruiere ich eine time.Time-Instanz mit einem bestimmten Zeitzonenversatz in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!