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?

Warum kann „time.Parse' in Go einen String nicht in eine „time.Time'-Instanz konvertieren, wenn es um die Zeitzone geht?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 00:50:03201Durchsuche

Why does `time.Parse` in Go fail to convert a string to a `time.Time` instance when timezone is involved?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn