为了账号安全,请及时绑定邮箱和手机立即绑定

使用给定的时间戳跟踪当前年份和月份

使用给定的时间戳跟踪当前年份和月份

Go
白猪掌柜的 2022-06-01 10:04:17
我有一个格式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)。


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号