带有开始和结束时间的Cron表达式
我试图写一个cron表达式,每天都有一个特定的开始时间和结束时间。即 每天10:15到17:35每分钟 一种可能的解决方案是编写3个不同的cron表达式,如下所示:带有开始和结束时间的Cron表达式,cron,Cron,我试图写一个cron表达式,每天都有一个特定的开始时间和结束时间。即 每天10:15到17:35每分钟 一种可能的解决方案是编写3个不同的cron表达式,如下所示: 0 15-59 10 * * * 0 * 11-17 * * * 0 0-35 17 * * * 是否有任何可能的方法将其写入一个cron表达式中?是的,使用 0 15-35 10-17 1/1 * ? * 您可以按照本教程进行操作 并在此处生成和测试表达式c# 在到小时之间运行作业 使用玉米面膜: ITrigg
0 15-59 10 * * *
0 * 11-17 * * *
0 0-35 17 * * *
是否有任何可能的方法将其写入一个cron表达式中?是的,使用
0 15-35 10-17 1/1 * ? *
您可以按照本教程进行操作
并在此处生成和测试表达式c#
在到小时之间运行作业
使用玉米面膜:
ITrigger trigger_1 = TriggerBuilder.Create()
.ForJob("YOUR_JOB")
.WithIdentity("trigger_1")
.StartAt(startTime)
.WithCronSchedule("0 0/1 8-13 ? * SUN,MON,TUE,WED,SAT *")
.Build();
使用石英表:
trigger_1 = TriggerBuilder
.Create()
.ForJob("YOUR_JOB")
.WithIdentity("trigger_1")
.StartAt(startTime)
.WithDailyTimeIntervalSchedule(c => c
.OnEveryDay()
.WithIntervalInMinutes(1).WithRepeatCount(1)
.StartingDailyAt(new TimeOfDay(08, 30))
.EndingDailyAt(new TimeOfDay(12, 30))
)
.Build();
HashMap weekday=newhashmap();
//字符串strDays=“[周一、周五]”;
字符串strCalDay=“”;
字符串startDate[]=fromDate.split(“-”);
字符串endDate[]=toDate.split(“-”);
工作日。put(“星期一”、“1”);
工作日。put(“星期二”、“2”);
工作日。星期三(“3”);
工作日。放置(“星期四”、“4”);
工作日。放置(“星期五”、“5”);
工作日。放置(“星期六”、“6”);
工作日。放置(“星期日”、“7”);
标准日期=标准日期。替换(“[”,”)。替换(“]”,”);
字符串strDay[]=strDays.trim().toUpperCase().split(“,”);
如果(strDay!=null&&strDay.length>0){
对于(int i=0;i
除了为特定的startDate和endDate指定多个crone表达式之外,没有其他方法可以使用单个crone表达式来实现。
不过,第二个crone表达式中有一个轻微的修改(突出显示的一个)
0 15-59 10***(上午10:15至10:59之间每分钟一次)
HashMap<String, String> weekday = new HashMap<>();
// String strDays ="[Monday, Friday]";
String strCalDay = "";
String startDate[] = fromDate.split("-");
String endDate[] = toDate.split("-");
weekday.put("MONDAY", "1");
weekday.put("TUESDAY", "2");
weekday.put("WEDNESDAY", "3");
weekday.put("THURSDAY", "4");
weekday.put("FRIDAY", "5");
weekday.put("SATURDAY", "6");
weekday.put("SUNDAY", "7");
strDays = strDays.replace("[", "").replace("]", "");
String strDay[] = strDays.trim().toUpperCase().split(",");
if (strDay != null && strDay.length > 0) {
for (int i = 0; i < strDay.length; i++) {
strCalDay = strCalDay + "," + weekday.get(strDay[i].trim().replace("\"", ""));
}
// System.out.println(" No of days :: "+ strCalDay);
strCalDay = strCalDay.replaceFirst(",", "");
//System.out.println(" No of days :: "+ strCalDay);
}
Calendar startCal = Calendar.getInstance(TimeZone.getDefault());
Calendar endCal = Calendar.getInstance(TimeZone.getDefault());
startCal.set(Integer.parseInt(startDate[0].toString()),
Integer.parseInt(startDate[1].toString()),
Integer.parseInt((startDate[2].toString())));
endCal.set(Integer.parseInt(endDate[0].toString()),
Integer.parseInt(endDate[1].toString()),
Integer.parseInt((endDate[2].toString())));
int yearsInBetween = endCal.get(Calendar.YEAR) - startCal.get(Calendar.YEAR);
int monthsDiff = endCal.get(Calendar.MONTH) - startCal.get(Calendar.MONTH);
long ageInMonths = yearsInBetween * 12 + monthsDiff;
System.out.println(" ageInMonths: " + ageInMonths);
if (startCal.get(Calendar.MONTH) != endCal.get(Calendar.MONTH)) {
if (ageInMonths == 3) {
Calendar middleMonth1 = (Calendar) startCal.clone();
middleMonth1.add(Calendar.MONTH, 1);
Calendar middleMonth2 = (Calendar) startCal.clone();
middleMonth2.add(Calendar.MONTH, 2);
int getFirstMMonth = middleMonth1.get(Calendar.MONTH);
int getSecMMonth = middleMonth2.get(Calendar.MONTH);
if (getFirstMMonth == 0) {
getFirstMMonth = 12;
System.out.println(" getFirstMMonth : " + getFirstMMonth);
}
if (getSecMMonth == 0) {
getSecMMonth = 12;
// System.out.println(" getSecMMonth : " +getSecMMonth );
}
exp = strTimeMin + " " + strTime + " " + startDate[2] + "-" + "31,1-31,1-31,1-" + endDate[2] + " " +
startDate[1] + "," + getFirstMMonth + "," + getSecMMonth + "," + endDate[1] + " *";
// System.out.println(" expression for month3 : " + exp);
}
if (ageInMonths == 2) {
Calendar middleMonth1 = (Calendar) startCal.clone();
middleMonth1.add(Calendar.MONTH, 1);
//System.out.println(" get middleDate month : " + middleMonth1.get(Calendar.MONTH));
int getMiddleMonth = middleMonth1.get(Calendar.MONTH);
if (getMiddleMonth == 0) {
getMiddleMonth = 12;
// System.out.println(" getMiddleMonth : " +getMiddleMonth );
}
// System.out.println(" Outside getMiddleMonth : " +getMiddleMonth );
endCal.set(Calendar.MONTH, 11);
//System.out.println(" get middleDate month 001: " + endCal.get(Calendar.MONTH));
exp = strTimeMin + " " + strTime + " " + startDate[2] + "-" + "31,1-31,1-" +
endDate[2] + " " + startDate[1] + "," +
getMiddleMonth + "," + endDate[1] + " *";
// System.out.println(" get end month2 : " + exp);
} else if (ageInMonths == 1) {
exp = strTimeMin + " " + strTime + " " + startDate[2] + "-31,1-" +
endDate[2] + " " + startDate[1] + "," + endDate[1] + " *";
//System.out.println(" expression for one month : " + exp);
}
} else {
exp = strTimeMin + " " + strTime + " " + startDate[2] + "-" + endDate[2] + " " + endDate[1] + " *";
}
System.out.println(" expression for before parameter : " + exp);
//Run with only Start Date
if (strRepeat != null && strRepeat.equalsIgnoreCase("No")) {
exp = strTimeMin + " " + strTime + " " + startDate[2] + " " + startDate[1] + " *";
} else if (strRepeat != null && strRepeat.equalsIgnoreCase("Daily")) {
exp = exp;
} else if (strRepeat != null && strRepeat.equalsIgnoreCase("Weekdays")) {
// System.out.println(" expression for weekdays before : " + exp);
exp = exp.replace("*", strCalDay);
// System.out.println(" expression for weekdays after : " + exp);
} else if (strRepeat != null && strRepeat.equalsIgnoreCase("Weekends")) {
// System.out.println(" expression for weekend before : " + exp);
exp = exp.replace("*", "6,7");
// System.out.println(" expression for weekend after : " + exp);
}
System.out.println(" cron expression ::: " + exp);