양식의 사용자 입력을 기반으로 cron 표현식을 작성해야합니다. 그래서 나는 주파수를 선택할 날짜 선택기와 선택 상자가 있습니다. 이렇게 쉽게 cron 표현식을 만들 수는 있지만 휠을 재발 명하고있는 것처럼 느껴집니다. 이 일을하기에 적합한 수업이 있습니까?날짜를 사용하여 cron 표현식을 구성하기위한 Java 클래스가 있습니까?
public String cron(String frequency, Calendar nextRunTime);
양식의 사용자 입력을 기반으로 cron 표현식을 작성해야합니다. 그래서 나는 주파수를 선택할 날짜 선택기와 선택 상자가 있습니다. 이렇게 쉽게 cron 표현식을 만들 수는 있지만 휠을 재발 명하고있는 것처럼 느껴집니다. 이 일을하기에 적합한 수업이 있습니까?날짜를 사용하여 cron 표현식을 구성하기위한 Java 클래스가 있습니까?
public String cron(String frequency, Calendar nextRunTime);
같은 방법으로 뭔가 내가 석영의 크론 기능이 당신을 위해 이것을 제공 할 수 있다고 생각하지만, 당신은 그것을 작동하게하는 몇 가지 프로그래밍을 할 필요가 없습니다. (http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html)
귀하의 질문을 정확하게 이해하는 경우입니다.
예,를 만들기 위해 노력하고 있어요 cron 표현식이지만, 날짜를 기반으로이 작업을 수행 한 Java 클래스가 있는지 궁금해했습니다. 따라서 CronExpression은 다음과 같은 방법을 사용합니다 : void buildExpression (String expression); 나는 래퍼 또는 도우미 같은 것이 있습니다. void buildExpression (string frequency, Calendar nextRunTime); 불행히도 이것이 존재하지 않는 것처럼 보일 수 있으므로 직접 작성해야합니다. 그냥 나에게 상당히 일반적인 일처럼 보였다. –
그럼 왜 대답을 수락 했습니까? –
그냥 정돈 해 - 그 대답은 기본적으로 "상자 밖에서 이것을하는 클래스가 없다"고 말합니다. –
Quartz Scheduler로 작업 할 클래스를 만들었습니다.
String startDateStr = "2013-10-19 09:00:00.0";
String endDateStr = "2013-10-26 23:00:00.0";
Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(startDateStr);
Date endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(endDateStr);
CronCalendarHelper_ calHelper = new CronCalendarHelper_(startDate, endDate);
String cron = calHelper.getSecondsDuration() + " " + calHelper.getMinsDuration() + " " + calHelper.getHoursDuration() + " "
+ calHelper.getDaysOfMonthDuration() + " " + calHelper.getMonthsDuration() + " " + calHelper.getDaysOfWeekDuration() + " "
+ calHelper.getYearsDuration();
System.out.println("Injecting Cron Expression " + cron);
참고 나는 또한 현재보다는 ID CronExpressionHelper
의 이름을 지정하고해야
참조하십시오
package com.az.ws.client.utility;
import java.util.Calendar;
import java.util.Date;
/**
* @author AZ
*
*/
public final class CronCalendarHelper_ {
private final Date mStartDate;
private final Calendar mStartCal;
private final Date mEndDate;
private final Calendar mEndCal;
private final String mSecondsDuration = "0";
private final String mMinsDuration = "0/30";
private final String mDaysOfWeekDuration = "?";
private String mHoursDuration;
private String mDaysOfMonthDuration;
private String mMonthsDuration;
private String mYearsDuration;
public CronCalendarHelper_(Date pStartDate, Date pEndDate) {
this.mStartDate = pStartDate;
mStartCal = Calendar.getInstance();
this.mEndDate = pEndDate;
mEndCal = Calendar.getInstance();
this.init();
}
private void init() {
mStartCal.setTime(mStartDate);
mEndCal.setTime(mEndDate);
String h1 = String.valueOf(mStartCal.get(Calendar.HOUR_OF_DAY));
String h2 = String.valueOf(mEndCal.get(Calendar.HOUR_OF_DAY));
this.mHoursDuration = h1 + "-" + h2;
String d1 = String.valueOf(mStartCal.get(Calendar.DAY_OF_MONTH));
String d2 = String.valueOf(mEndCal.get(Calendar.DAY_OF_MONTH));
this.mDaysOfMonthDuration = d1 + "-" + d2;
// First month is January which is 0, inconsistent Java Date API
String m1 = new java.text.SimpleDateFormat("MM").format(mEndCal.getTime());
String m2 = new java.text.SimpleDateFormat("MM").format(mStartCal.getTime());
if (Integer.valueOf(m2) - Integer.valueOf(m1) > 0) {
this.mMonthsDuration = m1 + "-" + m2;
} else {
this.mMonthsDuration = m1;
}
if (mEndCal.get(Calendar.YEAR) - mStartCal.get(Calendar.YEAR) > 0) {
String y1 = String.valueOf(mStartCal.get(Calendar.YEAR));
String y2 = String.valueOf(mEndCal.get(Calendar.YEAR));
this.mYearsDuration = y1 + "-" + y2;
} else {
this.mYearsDuration = String.valueOf(mStartCal.get(Calendar.YEAR));
}
}
public Date getDate() {
return mStartDate;
}
public String getSecondsDuration() {
return mSecondsDuration;
}
public String getMinsDuration() {
return mMinsDuration;
}
public String getDaysOfWeekDuration() {
return mDaysOfWeekDuration;
}
public String getHoursDuration() {
return mHoursDuration;
}
public String getDaysOfMonthDuration() {
return mDaysOfMonthDuration;
}
public String getMonthsDuration() {
return mMonthsDuration;
}
public String getYearsDuration() {
return mYearsDuration;
}
}
사용법은 아래의 클래스와 또한 사용법을 찾아주세요 기본값은 그 (것)들을위한 getter/setter를 쓸 수도 있지만 좋은 출발점입니다.
난 당신이 제안 무엇을합니까 하나가 생각하지 않는다, (날짜를 검색하기 위해 크론 구문 분석)의 주위에 그것을 다른 방법을 알고 모든 솔루션 –