- Notifications
You must be signed in to change notification settings - Fork34
⏰ Parse Cron Expressions, Compose Cron Expression Strings and Caluclate Execution Dates.
License
maennchen/crontab
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Elixir library for parsing, writing, and calculating Cron format strings.
Add:crontab
to your list of dependencies inmix.exs
:
defdepsdo[{:crontab,"~> 1.1"}]end
Everywhere you want to use the Cron expression sigil (e[cron expression]
).
importCrontab.CronExpression
An extended Cron expression has more precision than a normal Cron expression.It also specifies the second.
If you want to use extended Cron expressions with the sigil, just append ane
.
iex>importCrontab.CronExpressioniex>Crontab.DateChecker.matches_date?(~e[*/2],~N[2017-01-01 01:01:00])falseiex>Crontab.DateChecker.matches_date?(~e[*],~N[2017-01-01 01:01:00])true
All the date parameters default to now.
For previous, just replacenext
in the code below.
iex>importCrontab.CronExpressioniex>Crontab.Scheduler.get_next_run_date(~e[*/2],~N[2017-01-01 01:01:00]){:ok,~N[2017-01-01 01:02:00]}iex>Crontab.Scheduler.get_next_run_date!(~e[*/2],~N[2017-01-01 01:01:00])~N[2017-01-01 01:02:00]
iex>Enum.take(Crontab.Scheduler.get_next_run_dates(~e[*/2],~N[2017-01-01 01:01:00]),3)[~N[2017-01-01 01:02:00],~N[2017-01-01 01:04:00],~N[2017-01-01 01:06:00]]
If you statically define cron expressions, use the~e[cron expression]
sigil.
For dynamic cron expressions, there is a Parser module.
The parser module takes an optionalextended
flag. This is to mark if theexpression contains seconds. This defaults tofalse
.
iex>Crontab.CronExpression.Parser.parse"* * * * *"{:ok,%Crontab.CronExpression{day:[:*],hour:[:*],minute:[:*],month:[:*],weekday:[:*],year:[:*]}}iex>Crontab.CronExpression.Parser.parse!"* * * * *"%Crontab.CronExpression{day:[:*],hour:[:*],minute:[:*],month:[:*],weekday:[:*],year:[:*]}
iex>Crontab.CronExpression.Composer.compose%Crontab.CronExpression{}"* * * * * *"iex>Crontab.CronExpression.Composer.compose%Crontab.CronExpression{minute:[9,{:-,4,6},{:/,:*,9}]}"9,4-6,*/9 * * * * *"
Copyright (c) 2016, SK & T AG, JOSHMARTIN GmbH, Jonatan Männchen
This library is MIT licensed. See theLICENSE for details.
About
⏰ Parse Cron Expressions, Compose Cron Expression Strings and Caluclate Execution Dates.
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.