UNPKG

quartzcron

Version:

version: `0.1.0` [CHANGELOG](https://github.com/fedeghe/quartzcron/blob/master/CHANGELOG.md)

41 lines (36 loc) 1.3 kB
/* quartzcron (v.0.1.0) */ const { solve_dom, solve_dow, } = require('./dateutils'); function* generateDates(base, years, months, dom, dow, hours, minutes, seconds) { for (const year of years) for (const month of months) yield* generateDatesForMonth(base, year, month, dom, dow, hours, minutes, seconds);// month is 1-based } function* generateDatesForMonth(base, year, month, dom, dow, hours, minutes, seconds) { let daysInMonth; if (dom !== '?') { daysInMonth = solve_dom(year, month, dom); } else /* istanbul ignore else */ if (dow !== '?') { daysInMonth = solve_dow(year, month, dow); } for (let i = 0, l = daysInMonth.length; i < l; i++) yield* generateDatesForDay(base, year, month, daysInMonth[i], hours, minutes, seconds); } function* generateDatesForDay(base, year, month, day, hours, minutes, seconds) { for (const hour of hours) for (const minute of minutes) for (const second of seconds) { /* istanbul ignore else */ if (+base < Date.UTC(year,month-1, day, hour , minute, second)) yield new Date(Date.UTC(year, month-1, day, hour, minute, second)); // month is 0-based here } } module.exports = { generateDates };