我正在尝试将天数(实际上是数周)添加到 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贡献1712条经验 获得超3个赞
您需要转换weeksToAdd
为time.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 或更大单位的定义。
- 2 回答
- 0 关注
- 298 浏览
添加回答
举报
0/150
提交
取消