Konvertieren eines Zeitversatzes in einen Ort/eine Zeitzone in Go
Bei der Arbeit mit zeitkritischen Daten ist es oft notwendig, eine Zeit umzurechnen Offset in ein nutzbares time.Location-Objekt. Dies ermöglicht eine genaue Darstellung und Manipulation von Zeitwerten relativ zu bestimmten Zeitzonen.
Bedenken Sie beispielsweise den folgenden Codeausschnitt:
func main() { offset := "+1100" t, err := time.Parse("15:04 GMT-0700","15:06 GMT"+offset) if err != nil { fmt.Println("fail", err) } fmt.Println(t) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
Während dieser Code den Zeitwert mit dem angegebenen analysiert Offset, der anschließende Aufruf von t.Location() gibt keine aussagekräftigen Informationen zurück.
Um dieses Problem zu beheben, müssen wir manuell ein time.Location-Objekt erstellen, das die gewünschte Zeit darstellt versetzt. Dies kann mit der Funktion time.FixedZone erreicht werden:
loc := time.FixedZone("UTC+11", +11*60*60)
Die Variable loc ist ein time.Location-Objekt, das die Zeitzone UTC 11 darstellt. Anschließend können wir unsere t-Variable so einstellen, dass sie sich an diesem Ort befindet:
t = t.In(loc)
Auf diese Weise stellen wir sicher, dass der GMT-Offset aufgezeichnet wird und wir die Zeit relativ zum tatsächlichen Standortzeitoffset des Endbenutzers ausgeben können .
Hier ist ein Beispiel:
package main import ( "fmt" "time" ) func main() { loc := time.FixedZone("UTC+11", +11*60*60) t := time.Now() fmt.Println(t) fmt.Println(t.Location()) t = t.In(loc) fmt.Println(t) fmt.Println(t.Location()) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
Dieser Code gibt die aus Folgendes:
2009-11-10 23:00:00 +0000 UTC m=+0.000000001 UTC 2009-11-11 10:00:00 +1100 UTC+11 UTC+11 2009-11-10 23:00:00 +0000 UTC UTC+11
Wie Sie sehen können, liegt die Zeit t jetzt in der Zeitzone UTC 11 und ihre Location() gibt die entsprechenden Informationen zurück. Dies ermöglicht genaue zeitbasierte Operationen und Berechnungen.
Das obige ist der detaillierte Inhalt vonWie konvertiert man in Go einen Zeitversatz in eine Zeitzone?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!