cron4j

以前、Windows 環境の開発に入る前に考えたcronみたいなものをJavaで書いたが、同じ頃、世の中には、
cron4j なるものが出ていたのを今更、知ってかなりショック!何をやっていたんだ。

http://www.sauronsoftware.it/projects/cron4j/

自分で書いたのが馬鹿みたいだと思ったが、同じJVM内でスレッドを動かすか別のバッチプロセス(JVM外)かは任意にしたんだっけ。con4jをちょっと見たところ、スレッドのみの対応みたいだ。
月と曜日は、数値だけでなく、文字による表現が可能

from 1 (January) to 12 (December)
"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov" and "dec".

from 0 (Sunday) to 6 (Saturday)
"sun", "mon", "tue", "wed", "thu", "fri" and "sat"

分、時、日、月、曜日の書き方は、cronと同じ。
cron4j の Quickstart ページを見ればすぐに理解できる。

cron4jで起動しなくても、cron 書式のチェックとcron書式パターンに対する起動のチェックだけを
行いたい場合も、cron4j は便利だ。

boolean SchedulingPattern.validate(String pattern);
で、cron表現の正誤をチェック

SchedulingPattern sp = new SchedulingPattern(pattern);
boolean sts = sp.match( 実行時の、エポック、ミリ秒 );

→ true で、cron書式にマッチした時刻である
 → false で、cron書式にマッチしない時刻である
と解釈できる