cron-fns
A simple, zero dependency implementation of cron schedule functions. Runs in the browser, in Node.js, in Deno, anywhere with setTimeout
.
Quick Start
npm install cron-fns --save# or with yarn yarn add cron-fns
Usage
CronDaemon
Executes a callback on a given schedule.
Note: This should be stopped if no longer in use in the application
; ; // Check when it's going to run nextconsole.logdaemon.next; // Stop the daemondaemon.stop; // Start it againdaemon.start; // Check if it's runningconsole.logdaemon.state; // "running"
nextCronOccurrence(schedule, from?) => Date | undefined
Fetches the next date that matches the schedule, or undefined if no other time is available.
; nextCronOccurrence"0,30 9-17 * * MON", new Date"2020-01-01T00:00:00";// Returns 2020-01-06T09:00:00 // `from` defaults to the current date if not specified.nextCronOccurrence"0,30 9-17 * * MON 1987";// Returns undefined if no more possible dates
nextCronOccurrences(schedule, from?)
Returns a generator which iterates through each sequential date in order from the specified start point. The generator will only stop iterating if there is no more possible dates.
; nextCronOccurrences"0,30 9-10 * * MON", new Date"2020-01-01T00:00:00";// Returns a generator with the sequence:// 2020-01-06T09:00:00// 2020-01-06T09:30:00// 2020-01-06T10:00:00// ...
Cron
;;cron.next; // Returns the next date from nowcron.nextnew Date"2020-01-01T00:00:00"; // Returns 2020-01-06T09:00:00
Cron syntax rules
// ┌───────────── minute (0 - 59)// │ ┌───────────── hour (0 - 23)// │ │ ┌───────────── day of the month (1 - 31)// │ │ │ ┌───────────── month (1 - 12)// │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)// │ │ │ │ │// │ │ │ │ │nextCronOccurrence"0,30 9-17 * * MON";
- Use a single space to separate fields.
- Enumerate multiple values for a field by separating by a comma (
,
). - Specify a range of values with a hyphen (
-
). - Ranges and enumeration cannot be mixed.
Cron variations & notes
Optional years
If you specify 6 fields then the last field is the year. If not specifed it doesn't limit by year.
Optional seconds
If you specify 7 fields then the first field is the second. If not specified it chooses the zeroth second of each minute.
Timezones
All times and dates are based on the system (or browser's) local timezone.