Golang日期无法正确解析

问题描述 投票:0回答:1

我正在尝试将日期转换为UTC,但输出错误。

我尝试了以下操作:

loc, _ := time.LoadLocation("America/Los_Angeles")

    dateStr := time.Now().In(loc)

    fmt.Printf("Date: %s", dateStr)
    ret, err := time.Parse(time.RFC3339, dateStr.String())

    if err != nil {
        fmt.Println("\nError")
        fmt.Println(err)
    }

    fmt.Println(ret)

这没有用。我遇到错误:

日期:2009-11-10 15:00:00 -0800 PST解析时间“ 2009-11-1015:00:00 -0800 PST”作为“ 2006-01-02T15:04:05Z07:00”:无法解析“15:00:00 -0800 PST“设为” T“ 0001-01-01 00:00:00 +0000 UTC

我也尝试过:

timeLayout := "2006-01-02 15:04:05"

parseLoc, _ := time.LoadLocation("UTC")
utcParsed, _ := time.ParseInLocation(timeLayout, dateStr.String(), parseLoc)
fmt.Println("\n\n")     
fmt.Println(utcParsed)  

但我得到:

0001-01-01 00:00:00 +0000 UTC

知道为什么吗?

谢谢

datetime go date-parsing
1个回答
0
投票

与代表时间的字符串不同,Time代表具有纳秒精度的时间瞬间”。那一瞬间只是自任意开始时间以来的一个数字。这是绝对的,没有格式,也没有时区。这些是解释。无需转换。而是使用其他时区。

为此,将其保留为Time,然后在其上调用UTC()

UTC()

[如果有字符串,则将其解析,然后在结果fmt.Println(time.Now().UTC()) 上调用UTC()。我们需要查看该字符串的确定示例。


关于为什么从ParseInLocation获得Time的原因是因为解析时出错,但是您忽略了它。

0001-01-01 00:00:00 +0000 UTC
© www.soinside.com 2019 - 2024. All rights reserved.