Heim >Backend-Entwicklung >Golang >Warum kann „time.Parse' in Go einen String nicht in eine „time.Time'-Instanz konvertieren, wenn es um die Zeitzone geht?
Verstehen des time.Parse-Verhaltens
Bei Verwendung der Parse-Methode im Time-Paket von Go zum Konvertieren einer Zeichenfolge in eine time.Time-Instanz ist dies der Fall Es ist wichtig, die Zeitzone zu berücksichtigen und eine entsprechende Formatzeichenfolge bereitzustellen. Der folgende Code kann aufgrund einer falschen Zeitzonenbehandlung eine Zeichenfolge nicht wie erwartet in eine Zeit umwandeln:
import ( "fmt" "time" ) func main() { const longForm = "2013-05-13T18:41:34.848Z" t, _ := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") fmt.Println(t) }
Dieser Code gibt 0001-01-01 00:00:00 0000 UTC statt der erwarteten aus 13.05.2013 01:41:34.848 0000 UTC.
Lösung: Geben Sie die richtige Formatzeichenfolge an
Das fehlerhafte Verhalten wird durch eine falsche Formatzeichenfolge verursacht. Die longForm sollte so definiert werden, dass sie dem Format der Eingabezeichenfolge entspricht:
const longForm = "2006-01-02 15:04:05 -0700"
Diese Formatzeichenfolge entspricht dem Format der Eingabezeichenfolge: 2013-05-13 18:41:34.848 -0700 PDT.
Aktualisierter Code:
import ( "fmt" "log" "time" ) func main() { const longForm = "2006-01-02 15:04:05 -0700" t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") if err != nil { log.Fatal(err) } fmt.Println(t) }
Mit Wenn Sie die richtige Formatzeichenfolge eingeben, gibt der Code nun die erwartete Zeit aus: 2013-05-13 01:41:34.848 0000 UTC.
Das obige ist der detaillierte Inhalt vonWarum kann „time.Parse' in Go einen String nicht in eine „time.Time'-Instanz konvertieren, wenn es um die Zeitzone geht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!