Package: effect
Module: Cron
Represents a cron schedule with time constraints and timezone information.
When to use
Use to represent a recurring calendar schedule that can be matched against dates or used to compute scheduled occurrences.
Details
A Cron instance defines when a scheduled task should run, supporting
seconds, minutes, hours, days, months, and weekday constraints. It also
supports timezone-aware scheduling.
Example (Creating a cron schedule)
import { Cron } from "effect"
// Create a cron that runs at 9 AM on weekdays
const weekdayMorning = Cron.make({
minutes: [0],
hours: [9],
days: [],
months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
weekdays: [1, 2, 3, 4, 5] // Monday to Friday
})
// Check if a date matches the schedule
const matches = Cron.match(weekdayMorning, new Date("2023-06-05T09:00:00"))
console.log(matches) // true if it's 9 AM on a weekday
See
make for creating a schedule from explicit field constraintsparse for creating a schedule from a cron expression stringmatch for testing a date against a schedulenext for finding the next scheduled occurrenceSignature
export interface Cron extends Pipeable, Equal.Equal, Inspectable {
readonly [TypeId]: typeof TypeId
readonly tz: Option.Option<DateTime.TimeZone>
readonly seconds: ReadonlySet<number>
readonly minutes: ReadonlySet<number>
readonly hours: ReadonlySet<number>
readonly days: ReadonlySet<number>
readonly months: ReadonlySet<number>
readonly weekdays: ReadonlySet<number>
/** @internal */
readonly and: boolean
/** @internal */
readonly first: {
readonly second: number
readonly minute: number
readonly hour: number
readonly day: number
readonly month: number
readonly weekday: number
}
/** @internal */
readonly last: {
readonly second: number
readonly minute: number
readonly hour: number
readonly day: number
readonly month: number
readonly weekday: number
}
/** @internal */
readonly next: {
readonly second: ReadonlyArray<number | undefined>
readonly minute: ReadonlyArray<number | undefined>
readonly hour: ReadonlyArray<number | undefined>
readonly day: ReadonlyArray<number | undefined>
readonly month: ReadonlyArray<number | undefined>
readonly weekday: ReadonlyArray<number | undefined>
}
/** @internal */
readonly prev: {
readonly second: ReadonlyArray<number | undefined>
readonly minute: ReadonlyArray<number | undefined>
readonly hour: ReadonlyArray<number | undefined>
readonly day: ReadonlyArray<number | undefined>
readonly month: ReadonlyArray<number | undefined>
readonly weekday: ReadonlyArray<number | undefined>
}
}
Since v2.0.0