我正在尝试将日期转换为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
知道为什么吗?
谢谢
与代表时间的字符串不同,Time
“ 代表具有纳秒精度的时间瞬间”。那一瞬间只是自任意开始时间以来的一个数字。这是绝对的,没有格式,也没有时区。这些是解释。无需转换。而是使用其他时区。
为此,将其保留为Time
,然后在其上调用UTC()
。
UTC()
[如果有字符串,则将其解析,然后在结果fmt.Println(time.Now().UTC())
上调用UTC()
。我们需要查看该字符串的确定示例。
关于为什么从ParseInLocation获得Time
的原因是因为解析时出错,但是您忽略了它。
0001-01-01 00:00:00 +0000 UTC