GO时间字符串中的“ m = +”是什么?

时间:2018-10-15 04:12:53

标签: go time

我正在尝试Google OAuth2,并且在刷新令牌的有效期内遇到了此问题。它来自2018-10-15 15:42:37.5989253 +1100 AEDT m=+3610.688917401

我知道这是一种时间格式,但是我在任何地方都找不到有关m=+的任何信息。 Google内部使用它吗?我试图用time.RFC3339来解析它,但是您可以猜到,它忽略了m=+。它说

  

解析时间“ 2018-10-15 15:42:37.5989253 +1100 AEDT   m = + 3610.688917401“作为” 2006-01-02T15:04:05Z07:00“:无法解析”   15:42:37.5989253 +1100 AEDT m = + 3610.688917401“为” T“

那么时间字符串中的m=+是什么?

1 个答案:

答案 0 :(得分:1)

m=±<value>monotonic clock秒读。

以下是time.Time.String documentation对此的解释:

  

如果时间具有单调时钟读数,则返回的字符串包括最后一个字段“ m =±”,其中value是单调时钟读数,格式为秒的十进制数。

Afaik,golang不提供用于解析单调时钟的布局,因此我认为可以安全地删除它。

dateFormat := "2006-01-02 15:04:05.999999999 -0700 MST"
dateString := "2018-10-15 15:42:37.5989253 +1100 AEDT m=+3610.688917401"

t, err := time.Parse(dateFormat, strings.Split(dateString, " m=")[0])
if err != nil {
    fmt.Println(err)
    os.Exit(0)
}

fmt.Println(t) // 2018-10-15 15:42:37.5989253 +1100 AEDT

go 1.9开始,调用.String()将生成日期字符串输出,其中包含单调时钟。因此,我建议尝试使用.Format()代替.String()正常使用。单调时钟信息仅对调试有用。