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.).
Version: Deno 1.38.5
There is an inconsistency with the numeric representation of weekdays in the
Deno.cronfunction, 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
* * * * 3should 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
* * * * 4is required to trigger events every minute on Wednesdays. This originates from the Rust cratesaffron.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
saffronissue #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 betweencronerand the existingcronandsaffroncrates 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.).