Skip to content

Commit

Permalink
Docs: update cron expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
mabar committed Apr 22, 2024
1 parent f570045 commit 36ff547
Showing 1 changed file with 33 additions and 6 deletions.
39 changes: 33 additions & 6 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,8 @@ orisai.scheduler:
```

It's important to use caution with cron syntax, so please refer to the example below.
To validate your cron, you can also utilize [crontab.guru](https://crontab.guru).
To validate your cron, you can also utilize [explain command](#explain-command) or
the [explainer](https://github.com/orisai/cron-expression-explainer) directly.

```
* * * * *
Expand All @@ -182,6 +183,7 @@ Each part of expression can also use wildcard, lists, ranges and steps:

- wildcard - match always
- `* * * * *` - At every minute.
- day of week and day of month also support `?`, an alias to `*`
- lists - match list of values, ranges and steps
- e.g. `15,30 * * * *` - At minute 15 and 30.
- ranges - match values in range
Expand All @@ -194,11 +196,36 @@ Each part of expression can also use wildcard, lists, ranges and steps:

You can also use macro instead of an expression:

- `@yearly`, `@annually` - Run once a year, midnight, Jan. 1 (same as `0 0 1 1 *`)
- `@monthly` - Run once a month, midnight, first of month (same as `0 0 1 * *`)
- `@weekly` - Run once a week, midnight on Sun (same as `0 0 * * 0`)
- `@daily`, `@midnight` - Run once a day, midnight (same as `0 0 * * *`)
- `@hourly` - Run once an hour, first minute (same as `0 * * * *`)
- `@yearly`, `@annually` - At 00:00 on 1st of January. (same as `0 0 1 1 *`)
- `@monthly` - At 00:00 on day-of-month 1. (same as `0 0 1 * *`)
- `@weekly` - At 00:00 on Sunday. (same as `0 0 * * 0`)
- `@daily`, `@midnight` - At 00:00. (same as `0 0 * * *`)
- `@hourly` - At minute 0. (same as `0 * * * *`)

Day of month extra features:

- nearest weekday - weekday (Monday-Friday) nearest to the given day
- e.g. `* * 15W * *` - At every minute on a weekday nearest to the 15th.
- If you were to specify `15W` as the value, the meaning is: "the nearest weekday to the 15th of the month"
So if the 15th is a Saturday, the trigger will fire on Friday the 14th.
If the 15th is a Sunday, the trigger will fire on Monday the 16th.
If the 15th is a Tuesday, then it will fire on Tuesday the 15th.
- However, if you specify `1W` as the value for day-of-month,
and the 1st is a Saturday, the trigger will fire on Monday the 3rd,
as it will not 'jump' over the boundary of a month's days.
- last day of the month
- e.g. `* * L * *` - At every minute on a last day-of-month.
- last weekday of the month
- e.g. `* * LW * *` - At every minute on a last weekday.

Day of week extra features:

- nth day
- e.g. `* * * * 7#4` - At every minute on 4th Sunday.
- 1-5
- Every day of week repeats 4-5 times a month. To target the last one, use "last day" feature instead.
- last day
- e.g. `* * * * 7L` - At every minute on the last Sunday.

### Seconds

Expand Down

0 comments on commit 36ff547

Please sign in to comment.