Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emmanueltouzery/crony
A java library to work with cron specifications
https://github.com/emmanueltouzery/crony
cron cron-definitions cron-expression cron-libraries cron-specifications crontab java
Last synced: 3 months ago
JSON representation
A java library to work with cron specifications
- Host: GitHub
- URL: https://github.com/emmanueltouzery/crony
- Owner: emmanueltouzery
- License: mit
- Created: 2016-04-07T22:23:41.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-05-15T12:30:01.000Z (over 7 years ago)
- Last Synced: 2023-07-02T06:39:43.961Z (over 1 year ago)
- Topics: cron, cron-definitions, cron-expression, cron-libraries, cron-specifications, crontab, java
- Language: Java
- Homepage:
- Size: 73.2 KB
- Stars: 5
- Watchers: 4
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Crony
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.emmanueltouzery/crony/badge.png)](https://maven-badges.herokuapp.com/maven-central/com.github.emmanueltouzery/crony)
[![Javadocs](https://www.javadoc.io/badge/com.github.emmanueltouzery/crony.svg)](https://www.javadoc.io/doc/com.github.emmanueltouzery/crony)Crony is a library to deal with cron scheduler specifictions in java. It can parse cron specifications, calculate dates of execution, and also programmatically create cron specifications and save them back to cron format strings.
[Online Javadoc](http://emmanueltouzery.github.io/crony/apidocs/)
Crony is available on maven-central:
```xml
com.github.emmanueltouzery
crony
1.1.0```
Crony is licensed under the `MIT` license, and requires java8. It uses the java8 date time classes.
Crony relies a lot on [vavr](http://vavr.io/), and results are most of the time returned using vavr lists, sets and the vavr `Validation` construct. Please refer to the Vavr documentation. Crony also tries to avoid exceptions and instead use optionals and Validation constructs.
If you prefer to use a more classical java exception-based control flow, you can simply call `get()` on the `Validation` objects you get back, and it will throw a runtime exception if something went wrong (that way though you won't get the error message, use `getError()` for that).Besides the standard `cron` format, crony supports also the nonstandard mechanism of putting `L` for the day of the month to specify the last day of the month.
## Code snippets
```java
Cron.parseCronString("0 8 * * 1");
``````java
CronExecution.getNextExecutionDate(cron, date)
``````java
Cron.build(
HashSet.empty(),
HashSet.of(1,2),
HashSet.of(1, DayOfMonthSpec.LAST_DAY_OF_MONTH),
HashSet.of(Month.JANUARY,Month.MARCH),
HashSet.of(DayOfWeek.MONDAY, DayOfWeek.SUNDAY))
``````java
cron.toCronString()
``````java
cron.isMatch(datetime)
```