Date Go language time.Parse()用于无时区的时间戳

Date Go language time.Parse()用于无时区的时间戳,date,datetime,go,Date,Datetime,Go,在Go中,我试图使用time包中的函数将字符串时间戳转换为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

在Go中,我试图使用
time
包中的函数将字符串时间戳转换为
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
(从
15
增加到
22
),以说明他们的时间戳在负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()
,或者出于某种原因我的用例不受支持

您需要的格式字符串应为:

Mon Jan 02 15:04:05 MST 2006


也就是说,使用
MST
表示时区,使用
15
表示小时,如链接解析函数中所述。

在这种情况下,您可以使用
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)
}