2 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
time.Now().Weekday()
返回類型為 的值time.Weekday
,該值是int
. today+1
有效,因?yàn)?1 是一個(gè)無類型常量,并且它的類型是根據(jù)上下文確定的。在這種情況下, 和today
都是1
類型time.Weekday
。
另請注意,由于其定義方式,time.Saturday 為 6,因此time.Saturday == today+2
可以工作,但time.Saturday+2
不會匹配任何有效的工作日。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
我不確定你的問題,但我想你可以注意一下包裹time。它很強(qiáng)大。
Go中有多種時(shí)間類型,如time.weekday、 、time.duration、 等time.month。它們支持+運(yùn)算符,因?yàn)樗鼈兊幕A(chǔ)類型是數(shù)字,但time.Time不受支持。它的底層類型是結(jié)構(gòu)。我們可以使用 for 運(yùn)算的方法time.Time,如Time.add, Time.sub, Time.adddate, Time.after, Time.before,Time.equa可以使用Time.unixorTime.unixnano來獲取數(shù)值類型的時(shí)間戳進(jìn)行運(yùn)算。
作為例子,我實(shí)現(xiàn)了兩種方法來計(jì)算從某個(gè)時(shí)間到下一周的時(shí)間以及與當(dāng)前時(shí)間的偏差。
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 關(guān)注
- 172 瀏覽
添加回答
舉報(bào)