【问题标题】:Strange time parsing奇怪的时间解析
【发布时间】:2020-12-23 12:07:57
【问题描述】:

简单代码:

func main() {
    date := "2020-12-23T16:39:24.362+06:00"
    t, _ := time.Parse("2006-01-02T15:04:05.000+06:00", date)
    fmt.Printf("t = %s", t)
}

结果是t = 2006-12-23 16:39:24.362 +0000 UTC

游乐场链接:https://play.golang.org/p/3U6CzIrrMsM

我哪里做错了?

【问题讨论】:

  • 您可以使用预定义的格式; t, _ := time.Parse(time.RFC3339, date) - docs

标签: parsing go time


【解决方案1】:

参考时间有-0700 时区。引用time.Parse():

Parse 解析格式化的字符串并返回它所代表的时间值。布局通过显示参考时间来定义格式,定义为

Mon Jan 2 15:04:05 -0700 MST 2006

如果是值就会被解释;它用作输入格式的示例。然后将对输入字符串进行相同的解释。

通过此更改,它可以工作:

date := "2020-12-23T16:39:24.362+06:00"

t, err := time.Parse("2006-01-02T15:04:05.000-07:00", date)
fmt.Println(err)
fmt.Printf("t = %s", t)

然后输出(在Go Playground 上试试):

<nil>
t = 2020-12-23 16:39:24.362 +0600 +0600

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多