You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
934 B
27 lines
934 B
package cron |
|
|
|
import "time" |
|
|
|
// ConstantDelaySchedule represents a simple recurring duty cycle, e.g. "Every 5 minutes". |
|
// It does not support jobs more frequent than once a second. |
|
type ConstantDelaySchedule struct { |
|
Delay time.Duration |
|
} |
|
|
|
// Every returns a crontab Schedule that activates once every duration. |
|
// Delays of less than a second are not supported (will round up to 1 second). |
|
// Any fields less than a Second are truncated. |
|
func Every(duration time.Duration) ConstantDelaySchedule { |
|
if duration < time.Second { |
|
duration = time.Second |
|
} |
|
return ConstantDelaySchedule{ |
|
Delay: duration - time.Duration(duration.Nanoseconds())%time.Second, |
|
} |
|
} |
|
|
|
// Next returns the next time this should be run. |
|
// This rounds so that the next activation time will be on the second. |
|
func (schedule ConstantDelaySchedule) Next(t time.Time) time.Time { |
|
return t.Add(schedule.Delay - time.Duration(t.Nanosecond())*time.Nanosecond) |
|
}
|
|
|