我尝试parse字符串随着时间的推移而不幸的是,错误的月份(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)
}
答案 0 :(得分:11)
问题是您的时区偏移在布局中定义不明确:参考偏移为-0700
。您将自己定义为+01:00
,因此01
被解释为月份并删除之前定义的月份。因为你的工作偏移量也是01
,所以它被解析为1月。
以下示例适用于我playground
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 :(得分:5)
您的布局字符串不正确。布局字符串中的数字具有特殊含义,您使用1
两次:一次在月份部分,一次在时区部分。您要解析的字符串中的时区为01:00
,因此您将1
存储到月中。这解释了为什么返回的月份是1月(第一个月)。
更正后的布局字符串为2006-01-02T15:04:05.000-07:00
。或者,如果您对使用Z
表示UTC感到满意,那么time.RFC3339
常量可能是合适的。