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 關注
- 160 瀏覽
添加回答
舉報