【问题标题】:Parsing a golang time object from an incomplete string从不完整的字符串中解析 golang 时间对象
【发布时间】:2016-03-31 00:58:44
【问题描述】:

我有以下日期字符串:2017-09-04T04:00:00Z

我需要将此字符串解析为 golang 时间,以便在我的应用程序中获得统一的数据。到目前为止的代码如下:

parsedTime := "2017-09-04T04:00:00Z"
test, err := time.Parse(time.RFC3339, parsedTime)
check(err)
fmt.Println(test)

当我尝试运行程序时出现以下错误:

": extra text: 0:00 +0000 UTC parsing time "2017-09-04T04:00:00Z

如何添加它正在寻找的额外文本或让解析器停止关注 Z?

我还尝试了以下方法:

parsedTime := "2017-09-04T04:00:00Z"
test, err := time.Parse("2006-01-02T03:04:05Z", parsedTime)
check(err)
fmt.Println(test)

返回以下错误:

": extra text: 017-09-04T04:00:00Z

【问题讨论】:

  • 你的第二个例子seems to work fine
  • 我不确定这是一个完整的例子......这两种格式似乎都适用于 go1.6

标签: parsing time go rfc3339


【解决方案1】:

您使用的两种格式都适用于当前版本的 go:https://play.golang.org/p/Typyq3Okrd

var formats = []string{
    time.RFC3339,
    "2006-01-02T03:04:05Z",
}

func main() {
    parsedTime := "2017-09-04T04:00:00Z"

    for _, format := range formats {
        if test, err := time.Parse(format, parsedTime); err != nil {
            fmt.Printf("ERROR: format %q resulted in error: %v\n", format, err)
        } else {
            fmt.Printf("format %q yielded %s\n", format, test)
        }
    }
}

您能否提供一个工作示例来说明您的问题?您可以使用 go playground 进行共享 sn-ps。

【讨论】:

  • partedTime字符串的“T04”部分在使用24小时制时会产生错误。
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 2017-07-12
  • 2016-10-13
  • 2011-01-02
  • 1970-01-01
相关资源
最近更新 更多