График записи (временные диапазоны) - PullRequest
3 голосов
/ 28 февраля 2011

У меня есть код, который должен делать что-то по расписанию: например, в рабочее время делай Х, а в нерабочее время делай 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, что не совсем то, что мне нужно.

Кто-нибудь знает существующее определение и реализацию нотации?

Спасибо,

Ответы [ 2 ]

4 голосов
/ 28 февраля 2011

Для Java Joda time (оболочка Scala scala-time ) - мощная библиотека для расчета времени.Вы можете посмотреть на google-rfc-2445 , который делает что-то похожее на то, что вы просите (?).

Если вы ищете планировщик Java http://www.quartz -scheduler.org/ - хороший вариант.

1 голос
/ 28 февраля 2011

Я не думаю, что вы найдете что-то из коробки.В таких случаях лучше выполнять реализацию самостоятельно и иметь полный контроль над кодом.Вы можете использовать antlr для создания парсера.

Добавить понятие приоритета в ваш синтаксис.Тогда будет легче запланировать что-нибудь

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
...