- Notifications
You must be signed in to change notification settings - Fork1
Cron expression parser for Amazon EventBridge.
License
winebarrel/cronplan
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Cron expression parser for Amazon EventBridge.
$ curl cronplan.in -d'5 0 10 * ? *'Tue, 10 Oct 2023 00:05:00Fri, 10 Nov 2023 00:05:00Sun, 10 Dec 2023 00:05:00Wed, 10 Jan 2024 00:05:00Sat, 10 Feb 2024 00:05:00Sun, 10 Mar 2024 00:05:00Wed, 10 Apr 2024 00:05:00Fri, 10 May 2024 00:05:00Mon, 10 Jun 2024 00:05:00Wed, 10 Jul 2024 00:05:00
go get github.com/winebarrel/cronplan
package mainimport ("fmt""time""github.com/winebarrel/cronplan")funcmain() {cron,err:=cronplan.Parse("0 10 * * ? *")iferr!=nil {panic(err)}fmt.Println(cron.Minute.Exps[0].Number)//=> 0fmt.Println(cron.Hour.Exps[0].Number)//=> 10fmt.Println(cron.String())//=> "0 10 * * ? *"fmt.Println(cron.Match(time.Date(2022,11,3,9,0,0,0,time.UTC)))//=> falsefmt.Println(cron.Match(time.Date(2022,11,3,10,0,0,0,time.UTC)))//=> truefmt.Println(cron.Next(time.Date(2022,11,3,10,0,0,0,time.UTC)))//=> 2022-11-03 10:00:00 +0000 UTCfmt.Println(cron.Next(time.Date(2022,11,3,11,0,0,0,time.UTC)))//=> 2022-11-04 10:00:00 +0000 UTCfmt.Println(cron.NextN(time.Date(2022,11,3,10,0,0,0,time.UTC),3))//=> [2022-11-03 10:00:00 +0000 UTC 2022-11-04 10:00:00 +0000 UTC 2022-11-05 10:00:00 +0000 UTC]fmt.Println(cron.Between(time.Date(2022,11,3,10,0,0,0,time.UTC),time.Date(2022,11,4,10,0,0,0,time.UTC),))//=> [2022-11-03 10:00:00 +0000 UTC 2022-11-04 10:00:00 +0000 UTC]}
If you specify "L" for day-of-week, the last day of the week of each month is usually matched.
# cron(0 0 ? * 6L *)Fri, 27 Oct 2023 00:00:00Fri, 24 Nov 2023 00:00:00Fri, 29 Dec 2023 00:00:00Fri, 26 Jan 2024 00:00:00Fri, 23 Feb 2024 00:00:00
However, if you do not specify the day of the week before "L", the behavior will be the same as when you specify "SAT".
# cron(0 0 ? * L *) = cron(0 0 ? * SAT *)Sat, 07 Oct 2023 00:00:00Sat, 14 Oct 2023 00:00:00Sat, 21 Oct 2023 00:00:00Sat, 28 Oct 2023 00:00:00Sat, 04 Nov 2023 00:00:00
CLI to show next triggers.
brew install winebarrel/cronplan/cronplan
Usage: cronplan [OPTION] CRON_EXPR -h int hour to add -n int number of next triggers (default 10) -version print version and exit
$ cronplan '*/10 10 ? * MON-FRI *'Tue, 11 Oct 2022 10:00:00Tue, 11 Oct 2022 10:10:00Tue, 11 Oct 2022 10:20:00Tue, 11 Oct 2022 10:30:00Tue, 11 Oct 2022 10:40:00Tue, 11 Oct 2022 10:50:00Wed, 12 Oct 2022 10:00:00Wed, 12 Oct 2022 10:10:00Wed, 12 Oct 2022 10:20:00Wed, 12 Oct 2022 10:30:00$ cronplan -h -9 '*/10 10 ? * MON-FRI *'Tue, 11 Oct 2022 01:00:00Tue, 11 Oct 2022 01:10:00Tue, 11 Oct 2022 01:20:00Tue, 11 Oct 2022 01:30:00Tue, 11 Oct 2022 01:40:00Tue, 11 Oct 2022 01:50:00Wed, 12 Oct 2022 01:00:00Wed, 12 Oct 2022 01:10:00Wed, 12 Oct 2022 01:20:00Wed, 12 Oct 2022 01:30:00
CLI to check if datetime matches cron expression.
brew install winebarrel/cronplan/cronmatch
Usage: cronmatch [OPTION] CRON_EXPR DATE -h int hour to add -no-color disable color output -version print version and exit
$ cronmatch -h -9 '0 1 * * ? *' '2022/10/20 10:00''0 1 * * ? *' matches '2022/10/20 10:00' (offset: -9h)$ cronmatch '0 10 * * ? *' 'Oct 10, 2022, 10:10''0 10 * * ? *' does not match 'Oct 10, 2022, 10:10'
cf.https://pkg.go.dev/github.com/araddon/dateparse#readme-extended-example
CLI to visualize cron schedule.
brew install winebarrel/cronplan/cronviz
Usage: cronviz [OPTION] [FILE] -f string from date (default current date) -h int hour to add -p string period (default "1d") -version print version and exit
$ cat cron.txtbatch1 0 * * * ? *batch2 30 */2 * * ? *batch3 15,45 */3 * * ? *$ cronviz cron.txt > output.html$ open output.html
cf.https://raw.githack.com/winebarrel/cronplan/main/_example/timeline.html
CLI to grep with cron expression.
brew install winebarrel/cronplan/crongrep
Usage: crongrep [OPTION] CRON_EXPR -version print version and exit
$ cronplan -n 5 '10 12 */5 * ? *'Fri, 06 Oct 2023 12:10:00Wed, 11 Oct 2023 12:10:00Mon, 16 Oct 2023 12:10:00Sat, 21 Oct 2023 12:10:00Thu, 26 Oct 2023 12:10:00$ cronplan -n 5 '10 12 */5 * ? *' | crongrep '* * ? * WED-FRI *'Fri, 06 Oct 2023 12:10:00Wed, 11 Oct 2023 12:10:00Thu, 26 Oct 2023 12:10:00
CLI to show a schedule of cron expressions.
brew install winebarrel/cronplan/cronskd
Usage: cronskd [OPTION] [FILE] -e string end date (default: end of day) -s string start date (default: beginning of day) -version print version and exit
$ cat exprs.txt0 10 * * ? *15 12 * * ? *0 18 ? * MON-FRI *0 8 1 * ? *5 8-10 ? * MON-FRI *$ cronskd -s '2024-11-11' exprs.txtMon, 11 Nov 2024 08:05:00 5 8-10 ? * MON-FRI *Mon, 11 Nov 2024 09:05:00 5 8-10 ? * MON-FRI *Mon, 11 Nov 2024 10:00:00 0 10 * * ? *Mon, 11 Nov 2024 10:05:00 5 8-10 ? * MON-FRI *Mon, 11 Nov 2024 12:15:00 15 12 * * ? *Mon, 11 Nov 2024 18:00:00 0 18 ? * MON-FRI *$ cronskd -s '2024/11/12 10:00' -e 'Nov 13, 2024, 12:00' exprs.txtTue, 12 Nov 2024 10:00:000 10 * * ? *Tue, 12 Nov 2024 10:05:005 8-10 ? * MON-FRI *Tue, 12 Nov 2024 12:15:0015 12 * * ? *Tue, 12 Nov 2024 18:00:000 18 ? * MON-FRI *Wed, 13 Nov 2024 08:05:005 8-10 ? * MON-FRI *Wed, 13 Nov 2024 09:05:005 8-10 ? * MON-FRI *Wed, 13 Nov 2024 10:00:000 10 * * ? *Wed, 13 Nov 2024 10:05:005 8-10 ? * MON-FRI *
cf.https://pkg.go.dev/github.com/araddon/dateparse#readme-extended-example
About
Cron expression parser for Amazon EventBridge.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.