Schedules in plain English.
hron converts to and from cron, and says what cron can't. Write the schedule the way you'd say it out loud.
cron
0 9 * * 1-5
hron
every weekday at 9:00
One spec, native implementations everywhere
Rust
TypeScript
Python
Go
Dart
Java
C#
Ruby
Swift
Kotlin
WASM
The difference
Same schedule. One you can read.
Every expression on the right is valid hron. The ones at the bottom can't be written in cron at all.
cron cryptic
0 9 * * 1-5
0 10 * * 0,6
*/30 9-17 * * 1-5
0 9 1,15 * *
— not possible —
— not possible —
— not possible —
hron readable
every weekday at 9:00
every weekend at 10:00
every 30 min from 09:00 to 17:30 on weekdays
every month on the 1st, 15th at 9:00
every 2 weeks on monday at 9:00
every weekday at 9:00 except dec 25, jan 1
every 3 days at 09:00
Beyond cron
Things the five-field syntax can't say.
Compose any of these with except, until, starting, during, and a timezone.
Multi-week intervals
every 2 weeks on monday at 9:00
Every few days
every 3 days at 09:00
Start dates
every 2 weeks on monday at 9:00 starting 2026-03-02
Exception dates
every weekday at 9:00 except dec 25, jan 1
End dates
every day at 09:00 until 2026-12-31
Timezone & DST aware
every day at 9:00 in America/New_York
Install
Drop it into your stack.
One conformance spec, hand-written parsers, identical DST semantics across every language.
$cargo add hron