Skip to content
Use cron-like expressions to test if a datetime is in an allowed range.
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
bin
src
test
.editorconfig
.gitignore
LICENSE
README.md
package-lock.json
package.json

README.md

CircleCI Coverage Status npm version

cron-allowed-range

Use cron-like expressions to test if a datetime is in an allowed range.

Usage

API

npm install cron-allowed-range
const CronAllowedRange = require('cron-allowed-range');

/* Allowed if it is:
 * - At any minute
 * - Between 9 AM - 6 PM
 * - On any day of the month
 * - Between September to June, or on August
 * - Between Monday to Friday
 */
const cr = new CronAllowedRange('* 9-17 * 9-6,8 1-5', 'America/Toronto');

cr.isDateAllowed(new Date('December 18, 1995 08:59:59 GMT-0500'));
// false

cr.isDateAllowed(new Date('August 18, 1995 17:00:00 GMT-0400'));
// true

CLI

npm install -g cron-allowed-range

cr -e '* 9-17 * * *' -t 'America/Toronto'

echo $?
# exit code is 0 if current time is within range, otherwise 1

Formatting the Cron-Like Expression

* represents any value
, separator (e.g. 5,6)
- used to define (inclusive) ranges (e.g. 5-9)
/ not supported
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *

Diagram from Wikipedia

You can’t perform that action at this time.