修复 timer 计时错误

This commit is contained in:
fumiama 2021-10-26 22:24:28 +08:00
parent 31db6fa4fb
commit 0563006c55

View File

@ -61,19 +61,22 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
h := ts.Hour h := ts.Hour
mn := ts.Minute mn := ts.Minute
w := ts.Week w := ts.Week
unit := time.Minute unit := time.Duration(int(ts.Minute) - date.Minute())
if mn >= 0 { if mn >= 0 {
switch { switch {
case h < 0: case h < 0:
unit = time.Hour if unit < 0 {
unit += time.Hour
}
case d < 0: case d < 0:
unit = time.Hour * 24 unit += time.Hour * 24
case w < 0: case w < 0:
unit = time.Hour * 24 * 7 unit += time.Hour * 24 * 7
case m < 0: case m < 0:
unit = -1 unit = -1
default:
} }
} else {
unit = time.Minute
} }
stable := 0 stable := 0
if mn < 0 { if mn < 0 {
@ -130,7 +133,7 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
default: default:
date = date.AddDate(1, 0, 0) date = date.AddDate(1, 0, 0)
} }
date = firstWeek(&date, time.Weekday(ts.Week)) date = firstWeek(&date, time.Weekday(w))
} }
return date return date
} }