猿问

在 Go 中添加日期

我正在尝试将天数(实际上是数周)添加到 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不能成倍增加。

如何在日期中添加天数?


倚天杖
浏览 299回答 2
2回答

郎朗坤

使用Time.AddDate():myDate.AddDate(0, 0, 7 * weeksToAdd)

交互式爱情

您需要转换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 或更大单位的定义。
随时随地看视频慕课网APP

相关分类

Go
我要回答