去语言time.Parse()获取没有时区的时间戳

时间:2013-12-18 08:08:58

标签: date datetime go

在Go中,我尝试使用time包中的time.Parse()函数将字符串时间戳转换为Time对象。我知道Go有一种不常见的方式来表示时间戳的时间格式,方法是提供一个示例,说明它们的参考时间(Mon Jan 2 15:04:05 -0700 MST 2006)将以您的格式显示。但我仍然遇到错误问题。以下是我的一个时间戳示例:

Tue Nov 27 09:09:29 UTC 2012

以下是我正在制作的电话:

    t, err := time.Parse("Mon Jan 02 22:04:05 UTC 2006", "Tue Nov 27 09:09:29 UTC 2012")

所以基本上我在这里所做的就是尝试匹配日名/月名/日号,小时/分钟/秒格式,字符串文字“UTC”和年份格式的格式。请注意,我增加 Go参考格式的小时字段7(从1522),以说明他们的时间戳是在负7时区,我的所有时间戳都在UTC时区。

我得到的错误是:

parsing time "Tue Nov 27 09:09:29 UTC 2012" as "Mon Jan 02 22:04:05 UTC 2006": cannot parse ":09:29 UTC 2012" as "2"

我在这里做错了什么?我是否误解了如何使用time.Parse()或者我的用例由于某些原因而不受支持?

2 个答案:

答案 0 :(得分:6)

你的格式字符串应该是:

Mon Jan 02 15:04:05 MST 2006

playground

也就是说,使用MST作为时区,15表示小时,如链接的Parse函数中所述。

答案 1 :(得分:0)

在这种情况下,您可以使用 time.UnixDate:

package main

import (
   "fmt"
   "time"
)

func main() {
   t, e := time.Parse(time.UnixDate, "Tue Nov 27 09:09:29 UTC 2012")
   if e != nil {
      panic(e)
   }
   fmt.Println(t)
}

https://golang.org/pkg/time#UnixDate