Golang时间解析问题

时间:2018-08-23 11:36:16

标签: go time

我正在执行下面的代码来解析时间

var time_format = "2006-01-02T15:04:05.000+0700"
var s = "2018-08-23T14:10:31.692+0700"
p, _ := time.Parse(time_format, s)
fmt.Println(p.String())

以上程序的输出如下。

2018-08-23 14:10:31.692 +0000 UTC

我正在解析UTC之前+0700的时间,这是在UTC的同一时间,因此应为expeteted结果

2018-08-23 7:10:31.692 +0000 UTC

任何人都可以在这里说出问题是什么

1 个答案:

答案 0 :(得分:5)

这是因为您的格式字符串不正确。时区指示必须为-0700(而不是+0700)。 time.Parse()

  

布局通过显示参考时间(定义为)来定义格式

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

所做的更改可以起作用:

var format = "2006-01-02T15:04:05.000-0700"

var s = "2018-08-23T14:10:31.692+0700"
p, err := time.Parse(format, s)

fmt.Println(p.String(), err)

这将输出(在Go Playground上尝试):

2018-08-23 14:10:31.692 +0700 +0700 <nil>