Skip to content

Deno.cron Day-of-Week mismatch: Numeric weekdays off by one #21555

Description

@Hexagon

Version: Deno 1.38.5

There is an inconsistency with the numeric representation of weekdays in the Deno.cron function, it is off by one compared to standards.

Expected Behavior:

Based on conventional "system cron" logic (as detailed in the references listed below), the expression * * * * 3 should denote every minute of every Wednesday. This follows the typical numbering of days where Sunday is 0, Monday is 1, and so forth.

References:

Actual Behavior:

In Deno, the expression * * * * 4 is required to trigger events every minute on Wednesdays. This originates from the Rust crate saffron.

Saffron, as explained in a Cloudflare blog post, is influenced by the (Java) Quartz scheduler's cron parser. Quartz adopts a different standard where the week starts with 1 (Sunday) and ends with 7 (Saturday). This is also documented in saffron issue #19.

Concern:

The main concern is the adoption of Quartz's weekday numbering in Deno, which contradicts the more widely accepted system cron standard (0 for Sunday, 1 for Monday, etc.).

Alternative Solution:

In response to this (and other issues with existing Rust cron implementations), I have created an alternative crate, croner, which aims to align more closely with the standard cron behavior, and extend them with commonly adopted additional features. A detailed comparison between croner and the existing cron and saffron crates can be found at Why Croner instead of Cron or Saffron? (Disclaimer: This comparison is based on my own quick tests, as documentation for the other crates is limited.).

Metadata

Metadata

Assignees

No one assigned

    Labels

    ext/cronneeds discussionthis topic needs further discussion to determine what action to take

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions