我有一个格式181020Z为每月第 18 天的时间戳,时间为 1020 UTC。我想将其解析为 go 从而time.Time给我2019-04-18T10:20:00Z而不是0000-01-18T10:20:00Z.下面是我用来解析时间的代码 now := time.Now() layout := "200601021504Z" timeField := strconv.Itoa(now.Year()) + strconv.Itoa(int(now.Month())) + fields[1] fmt.Println(timeField) // 20204181050Z t, err := time.Parse(layout, timeField)
1 回答

SMILET
TA贡献1796条经验 获得超4个赞
这是解决此问题的一种方法:
func main() now := time.Now() layout := "021504Z" t, _ := time.Parse(layout, "181020Z") t = t.AddDate(now.Year(), int(now.Month()) - 1, 0) fmt.Println(t) // 2020-04-18T10:20:00Z
关于你的最后一个解决方案——它几乎是正确的)。问题是您的 layout( "200601021504Z"
) 需要两位数的月份表示(即04
,而不是4
四月)。但now.Month()
返回没有填充的月份表示0
(即4
)。
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消