一尘不染

时间解析行为

go

在Go中,尝试time.Time使用时间包的Parse方法将字符串转换为时,不会返回预期结果。似乎时区有问题。我想将UTC中的日期和时间更改为ISO
8601。

package main

import (
    "fmt"
    "time"
)

func main() {
    const longForm = "2013-05-13T18:41:34.848Z"
    //even this is not working
    //const longForm = "2013-05-13 18:41:34.848 -0700 PDT"
    t, _ := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT")
    fmt.Println(t)
    //outputs 0001-01-01 00:00:00 +0000 UTC
}

提前致谢!


阅读 276

收藏
2020-07-02

共1个答案

一尘不染

time.Parse使用特殊值进行时间格式化,并期望格式与这些值一起传递。

如果您传递正确的值,它将以正确的方式解析时间。

因此,过去的年份为2006年,月份为01年,然后继续这样…

package main

import (
    "fmt"
    "time"
)

func main() {
    const longForm = "2006-01-02 15:04:05.000 -0700 PDT"
    t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT")
    fmt.Println(t.UTC(), err)
    //outputs 2013-05-14 01:41:34.848 +0000 UTC <nil>
}
2020-07-02