2 回答
TA贡献1841条经验 获得超3个赞
time.Now().Weekday()
返回类型为 的值time.Weekday
,该值是int
. today+1
有效,因为 1 是一个无类型常量,并且它的类型是根据上下文确定的。在这种情况下, 和today
都是1
类型time.Weekday
。
另请注意,由于其定义方式,time.Saturday 为 6,因此time.Saturday == today+2
可以工作,但time.Saturday+2
不会匹配任何有效的工作日。
TA贡献1829条经验 获得超7个赞
我不确定你的问题,但我想你可以注意一下包裹time。它很强大。
Go中有多种时间类型,如time.weekday、 、time.duration、 等time.month。它们支持+运算符,因为它们的基础类型是数字,但time.Time不受支持。它的底层类型是结构。我们可以使用 for 运算的方法time.Time,如Time.add, Time.sub, Time.adddate, Time.after, Time.before,Time.equa可以使用Time.unixorTime.unixnano来获取数值类型的时间戳进行运算。
作为例子,我实现了两种方法来计算从某个时间到下一周的时间以及与当前时间的偏差。
import (
"time"
)
func NextWeekdayTime(now time.Time, weekday time.Weekday) time.Time {
return now.AddDate(0, 0, NextWeekdayNum(now, weekday))
}
func NextWeekdayNum(now time.Time, weekday time.Weekday) int {
diff := (weekday - now.Weekday()) + 7
if diff >= 7 {
diff -= 7
}
return int(diff)
}
- 2 回答
- 0 关注
- 109 浏览
添加回答
举报