- Notifications
You must be signed in to change notification settings - Fork33
⏰ 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.