2011-02-27 18 views
3

スケジュールに基づいて処理する必要のあるコードがあります。営業時間内にはX時間後にYを行います。スケジュールは顧客の定義に従いますので、私は人によって書かれ、自分のプログラムで解析できる表記が必要です。私は次のようなものを考えています:スケジュール表記(時間範囲)

12/25:0730-1730 Do Y 
[Mo-Fr]:0730-1730 Do X 
[Mo-Tu]:1730-0730 Do Y 
Fr:1730-Mo:0730 Do Y 

間違いなく毎週のバリエーションがあります。年ごとの変動(休日)はおそらくそうです。私は、効率的かつ柔軟な表記法が好きです。

は、私はまた、時間範囲を解析し、私はウェブを検索し、何も見つからなかっましたで。

指定した日付時間がある範囲を私に教えてくれますJavaコードを必要としています。最も近いのはCRONの表記ですが、これは私が必要とするものではありません。

既存の表記の定義と実装について知っている人はいますか?

ありがとう、

+0

特定の時間に何かを実行するのか、その間隔の間に何かが起こるのを許可しますか? – oluies

+0

Hmmm、あなたがCRON表記法をよく知っていれば、かなり表現力があります。また、独自のスケジューラーを構築する代わりにQuartzを使用することを検討してください。 Cronのような構文http://www.quartz-scheduler.org/docs/api/2.0.0/org/quartz/CronExpression.htmlや他のスケジューリング方法もサポートしています。 – harschware

答えて

4

のスケジュールを設定することが容易になります(Scalaはscala-timeラッパー)時間の計算のための強力なライブラリです。 google-rfc-2445を見ると、あなたが求めているもの(?)のようになります。

Javaスケジューラをお探しの場合は、http://www.quartz-scheduler.org/をお勧めします。

+0

これらの参考文献をありがとう。 joda-timeのようなものは私が必要とするものより少ないが、良い出発点になるかもしれない。 Googleコードには必要以上のものがありますが、本当に便利なオブジェクトを取り除くことができます。これを必要とするクライアントは1人だけです。私はエレガントな表記法で、人々にとっては難しいが、プログラムは簡単なものをあきらめてしまうかもしれない。 – TomU

1

私はあなたが箱から何かを見つけるとは思わない。そのような場合は、自分で実装を行い、コードを完全に制御する方がよいでしょう。 antlrを使用してパーサーを作成することができます。

構文に優先度の概念を追加します。そして、いろいろ書いにJavaのJoda timeについては

01.01.2011-31.01.2011 prio 1 do-idle-stuff 
[Mo-Fr]    prio 2 do-work 
[Sa-Su]    prio 2 weekend 
10.02.2011-17.02.2011 prio 3 go-on-holidays 
関連する問題