带有开始和结束时间的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

我试图写一个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# 在到小时之间运行作业

使用玉米面膜:

        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);