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

在 Go 中添加日期

在 Go 中添加日期

Go
倚天杖 2021-11-15 15:28:55
我正在尝试将天数(实际上是数周)添加到 Go 中的现有日期。我试过了 myDate.Add(time.Hour * 24 * 7 * weeksToAdd)但是当我尝试构建时出现错误: invalid operation: time.Hour * startAdd (mismatched types time.Duration and float64)weeksToAdd目前 a 也是如此float64,但我可以将其更改为 int 或其他任何内容。将它更改为 int 只会改变我的错误,int并且Duration不能成倍增加。如何在日期中添加天数?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

使用Time.AddDate()

myDate.AddDate(0, 0, 7 * weeksToAdd)


查看完整回答
反对 回复 2021-11-15
?
交互式爱情

TA贡献1712条经验 获得超3个赞

您需要转换weeksToAddtime.Duration

myDate.Add(time.Hour * 24 * 7 * time.Duration(weeksToAdd))

在 Go 中,类型别名不能互换使用,即使time.Duration技术上是int64.

此外,在这里,即使数字常量 24 和 7 没有明确键入,它们仍然可以按原样使用,请参阅https://blog.golang.org/constants以获得深入的解释。

有关运行示例,请参阅http://play.golang.org/p/86TFFlixWj

正如评论和另一个答案中所提到的,当工作时间超过 24 小时时,time.AddDate()最好使用time.Add(),因为time.Duration基本上代表纳秒。在处理天、周、月和年时,由于夏令时、闰年和可能的闰秒等因素,必须非常小心。

time.Duration类型和表示单位的相关常量的文档强调了这个问题(https://golang.org/pkg/time/#Duration):

为了避免夏令时时区转换之间的混淆,没有对 Day 或更大单位的定义。


查看完整回答
反对 回复 2021-11-15
  • 2 回答
  • 0 关注
  • 298 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信