quartz - Cron Expressions
quartz 의 cron expression 에 대해 알아 보자~~ ^^
이 글은 http://www.opensymphony.com/quartz/wikidocs/TutorialLesson6.html 에 있는 글을 바탕으로 작성된 글임을 밝힘니다. 원문을 보시고 싶으시면 링크로 가시면 됩니다.
- Seconds, 초
- Minutes, 분
- Hours, 시간
- Day-of-Month, 일
- Month, 월
- Day-of-Week, 주
- Year (optional field), 년
예) "0 0 12 ? * WED" 는 "수요일 12:00 pm 마다"를 의미합니다.
본격적인 설명 >
'-' 문자를 사용해서 범위를 ', 문자를 사용해서 목록을 표현 할 수 있어요
예로 "MON-FRI" 는 "월요일 에서 금요일"을 의미하며, "MON, WED, FRI" 는 "월, 수, 금"을 의미합니다.
"MON-WED, SAT" 는 굳이 설명하지 않아도 아시리라 믿습니다.
와일드카드 문자 '*' 는 필드에서 가능한 모든(every) 값을 의미 합니다.
Month 필드에서 사용되면 매월을 의미하고, Year 필드에서는 매년을 의미하겠죠~
각 필드의 유효한 값을 살펴 보죠~ >
1. Seconds, 0-59
2. Minutes, 0-59
3. Hours, 0-23
4. Day-of-Month, 0-31 (단, 각 월이 몇일까지 있는지에 대해서 주의하세요~)
5. Month, 0-11 or JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC
6. Day-of-Week, 1 - 7 (1 = Sunday) or SUN, MON, TUE, WED, THU, FRI and SAT
7. Year, 9999 겠죠...(확인은 안해봤습니다만..)
특수 문자의 의미 >
'/' 문자는 값 증분을 의미합니다. 예를 들면, '0/15' 을 minute 필드에 기록하면 '0분에 시작해서 15분마다'를 의미합니다. 만약 동일한 필드에 '3/20'을 기록하면 '3, 23, 43'을의미합니다.
'?' 문자는 day-of-month and day-of-week 필드에서만 사용 됩니다. 특별한 설정을 하지 않겠다는 의미입니다.
'L' 문자는 day-of-month and day-of-week 필드에서만 사용 됩니다. 'last'를 약자로 표기한 것이며, 사용 필드 위치에 따라 의미가 조금 다릅니다. 예를 들면, day-of-month 필드에서의 의미는 '달의 마지막 날' 을 의미합니다. 1월에는 31일 2월에는(윤년이 아닐경우) 28일을 의미하죠. day-of-week 필드에서의 의미는 간단하게 7 or SAT 를 의미합니다. 하지만 앞에 다른 값과 함께 사용될 경우 그 의미가 변하는데요. '달의 마지막 요일을' 의미하게 됩니다. 예를 들면 '6L'또는 'FRIL'의 경우 '달의 마지막 금요일'을 의미하게 되는 거죠. 주의할 점이 있는데, 이런 방식으로 리스트 혹은 범위를 기술하지 마세요. 예상치 못한 결과를 낳을 수 있습니다.
'W' 문자는 주어진 날에서 가장 가까운 평일(월-금)을 의미합니다. 예를 들면 15W를 day-of-month 필드에 기술하게 되면 '월 중 15일에 가장 가까운 평일'을 의미하게 되는 것이죠~
'#' 은 월의 몇 번째 평일을 의미합니다. 예를 들면 '6#3' 또는 'FRI#3' 을 day-of-week 필드에 기술하면 '월 중 3번째 금요일' 을 의미하는 것이죠~
이 글이 도움이 되었으면 좋겠네요~
감사합니다.