繁体   English   中英

为什么 time.Parse 解析时间不正确?

[英]why does time.Parse parse the time incorrectly?

我正在尝试将字符串解析为 time with 但不幸的是 go 得到了错误的月份(1 月而不是 6 月)

package main

import "fmt"
import "time"

func main() {

    t := "2014-06-23T20:29:39.688+01:00"
    tc, _ := time.Parse("2006-01-02T15:04:05.000+01:00", t)
    
    fmt.Printf("t was %v and tc was %v", t, tc)

}

问题是您的时区偏移在布局中定义不明确:参考偏移是-0700 您将您的定义为+01:00 ,因此01被解释为月份并删除先前定义的月份。 由于您的工作偏移量也是01 ,因此它被解析为 1 月。

以下示例适用于我的操场

package main

import "fmt"
import "time"

func main() {

    t := "2014-06-23T20:29:39.688+01:00"
    tc, _ := time.Parse("2006-01-02T15:04:05.000-07:00", t)

    fmt.Printf("t was %v and tc was %v", t, tc)

}

您的布局字符串不正确。 布局字符串中的数字具有特殊含义,您使用1两次:一次在月份部分,一次在时区部分。 您正在解析的字符串中的时区是01:00 ,因此您将1存储到月份中。 这就解释了为什么返回的月份是一月(第一个月)。

更正后的布局字符串是2006-01-02T15:04:05.000-07:00 或者,如果您对使用Z表示 UTC 感到满意,则time.RFC3339常量可能是合适的。

暂无
暂无

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

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