繁体   English   中英

Go 语言 time.Parse() 用于没有时区的时间戳

[英]Go language time.Parse() for timestamps with no timezone

在 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 参考格式的 hours 字段增加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()或者我的用例由于某种原因不受支持?

你的格式字符串应该是:

Mon Jan 02 15:04:05 MST 2006

游乐场

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM