Cron string parser for node and the browser
Try the online demo and check the source code for the integration.
yarn add cron-converter
or
npm install cron-converter --save
Version 2.1.0
introduces support for the non standard L
character which represents the last day of the month. This feature is on by default and can be turned off by setting the enableLastDayOfMonth
option to false
.
Versions 2.x.x
are not backwards compatible with versions 1.x.x
.
2.x.x |
1.x.x |
|
---|---|---|
API | Functional | Object-oriented |
Loader | ESM and CommonJS | CommonJS only |
Type definitions | Bundled | Install @types/cron-converter |
Date/time | Luxon |
Moment.js |
Tree-shaking | ✅ | ❌ |
import { stringToArray, arrayToString, getSchedule, getUnits } from "cron-converter";
// Every 10 mins between 9am and 5pm on the 1st of every month
const arr = stringToArray("*/10 9-17 1 * *");
// Prints:
// [
// [ 0, 10, 20, 30, 40, 50 ],
// [ 9, 10, 11, 12, 13, 14, 15, 16, 17 ],
// [ 1 ],
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],
// [ 0, 1, 2, 3, 4, 5, 6 ]
// ]
console.log(arr);
const str = arrayToString([[0], [1], [1], [5], [0, 2, 4, 6]]);
// Prints: '0 1 1 5 */2'
console.log(str);
Default: false
const arr = [[1], [1], [1], [1, 2, 3], [1, 2, 3]];
const str = arrayToString(arr, { outputMonthNames: true });
// Prints: '1 1 1 JAN-MAR 1-3'
console.log(str);
Default: false
const arr = [[1], [1], [1], [1, 2, 3], [1, 2, 3]];
const str = arrayToString(arr, { outputWeekdayNames: true });
// Prints: '1 1 1 1-3 MON-WED'
console.log(str);
Default: false
const arr = [[1], [1], [1], [1, 6, 11], [0, 1, 2, 3, 4, 5, 6]];
// Prints: '1 1 1 H/5 H'
console.log(arrayToString(arr, { outputHashes: true }));
Default: true
const arr = [[1], [1], [1], [-1], [1]];
// Prints: '1 1 1 L 1'
console.log(arrayToString(arr, { enableLastDayOfMonth: true }));
const str = '1 1 1 L 1';
// Prints: [[1], [1], [1], [-1], [1]]
console.log(stringToArray(str, { enableLastDayOfMonth: true }));
// Convert a string to an array
const arr = stringToArray("*/5 * * * *");
// Get the iterator, initialised to now
let schedule = getSchedule(arr);
// Optionally pass a reference `Date` and a `timezone`
let reference = new Date(2013, 2, 8, 9, 32);
schedule = getSchedule(arr, reference, "Europe/London");
// Calls to `.next()` and `.prev()` return a Luxon `DateTime` object
// Prints: '2013-03-08T09:35:00+00:00''
console.log(schedule.next().format());
// Prints: '2013-03-08T09:40:00+00:00''
console.log(schedule.next().format());
// Reset
schedule.reset();
// Prints: '2013-03-08T09:30:00+00:00''
console.log(schedule.prev().format());
// Prints: '2013-03-08T09:25:00+00:00''
console.log(schedule.prev().format());
This is useful if you are creating a user interface. See units.ts.
const units = getUnits();
git clone https://github.com/roccivic/cron-converter
cd cron-converter
yarn
yarn build
yarn test
yarn coverage