algebra/grammar/language for expressing time intervals
I need some cron-like functionality for long running daemon written in
I want to be able to schedule an event to be run:
1. once, at a specific time
2. some regularly scheduled time
I don't see an existing library to do this, so I am starting work on
The first issue I am looking at is how to specify time intervals. The
primary example I have looked at is cron. Cron is pretty good, but I
don't see a way to do something like, run a job every other Wednesday.
I also want to be able to display the interval schedule to the user,
allow them to modify it, and also save the schedule to disk and reload
it. So this essentially means that the type for describing the
intervals can not contain any functions.
Does anyone know of a good language for describing intervals? I want
to be able to express things like:
- run every other wednesday
- run at 15 minutes past the hour
- run at 15 minutes past the hour every wednesday
- run at 15 and 25 minutes past the hour between the hours of 2 and
- run every weekday at 8AM unless it is a holiday (the list of
holidays would be supplied).
Basically, everything you can express with cron, and a bit more.
Is there any existing languages/grammars/algebras for this that I
should look at?