2011-02-27 2 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 

분명히 주간 변이가있을 것이다. 매년 변동 (공휴일) 가능성이 높습니다. 효율적이고 유연한 표기법을 원합니다.

는 또한 시간 범위를 분석하고 내가 웹을 검색하고 아무것도 발견했습니다에.

주어진 날짜의 시간이 범위 말해 것이다 자바 코드가 필요합니다. CRON 표기법이 가장 필요합니다.

기존 표기법 정의 및 구현에 대해 알고있는 사람은 누구입니까?

고마워,

+0

특정 시간에 무언가를 실행하거나 해당 간격 사이에 무언가를 "허용"합니까? – oluies

+0

흠, CRON 표기법을 잘 알고 있다면 잘 표현할 수 있습니다. 또한, 자신의 스케줄러를 만드는 대신 Quartz를 사용하는 것을 고려해보십시오. 그것은 Cron 같은 문법 http://www.quartz-scheduler.org/docs/api/2.0.0/org/quartz/CronExpression.html과 다른 스케줄링 방법을 지원합니다. – harschware

답변

4

일정을 쉽게 될 것입니다 것은 시간 계산을위한 강력한 라이브러리입니다. google-rfc-2445을 보면 (?)와 같은 질문을 할 수 있습니다.

자바 스케줄러를 찾고있는 경우 http://www.quartz-scheduler.org/을 사용하는 것이 좋습니다.

+0

이러한 참고를 보내 주셔서 감사합니다. joda-time이 내가 필요한 것보다 적게 보이지만 좋은 출발점이 될 수 있습니다. 구글 코드는 내가 필요로하는 것 이상을 가지고 있지만 어쩌면 나는 정말로 유용한 객체들을 제거 할 수있을 것이다. 이것을 필요로하는 고객은 단 한 명입니다. 나는 사람들에게 어려운 것이지만 프로그램하기 쉽도록 우아한 표기법을 포기할지도 모른다. – TomU

1

나는 당신이 상자에서 뭔가를 찾을 것이라고 생각하지 않습니다. 이러한 경우 구현을 직접 수행하고 코드를 완전히 제어하는 ​​것이 좋습니다. antlr을 사용하여 파서를 만들 수 있습니다.

구문에 우선 순위 개념을 추가하십시오. 그 다음은 (스칼라 scala-time 래퍼)가 someting에게 자바 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