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

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

Mary-Kate Olsen
Release: 2024-11-17 00:50:03
Original
205 people have browsed it

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

Understanding time.Parse Behavior

When using the Parse method in Go's time package to convert a string to a time.Time instance, it's important to consider the timezone and provide an appropriate format string. The following code fails to convert a string to a time.Time as expected, due to incorrect timezone handling:

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)
}
Copy after login

This code prints 0001-01-01 00:00:00 0000 UTC instead of the expected 2013-05-13 01:41:34.848 0000 UTC.

Solution: Specify Correct Format String

The incorrect behavior is caused by an incorrect format string. The longForm should be defined to match the format of the input string:

const longForm = "2006-01-02 15:04:05 -0700"
Copy after login

This format string corresponds to the format of the input string: 2013-05-13 18:41:34.848 -0700 PDT.

Updated 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)
}
Copy after login

With the correct format string, the code will now output the expected time: 2013-05-13 01:41:34.848 0000 UTC.

The above is the detailed content of Why does `time.Parse` in Go fail to convert a string to a `time.Time` instance when timezone is involved?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template