我正在使用jqCron生成cron表达式来安排我的工作。每天9:30的示例cron表达是“30 9 * * *”
相同表达式的Quartz支持的cron格式为“0 30 9 * *?”
是否有任何js实用程序可用于转换jqCron生成的cron以支持Quartz格式的cron,反之亦然。
在这个例子中,jqCron js内部方法被覆盖以支持Quartz格式。我们可以不用像js实用函数那样覆盖jqCron js吗
由于
答案 0 :(得分:1)
浏览以下链接。我使用了这个API,它与石英兼容。
https://github.com/felixruponen/jquery-cron
有些人可以从Git Repository上面下载源代码,并在他们的项目中包含CSS文件和jquery-cron-min.js文件。下面的代码片段对任何人来说都是一个好的开始。
$('#schedulerWidget').cron({ initial: "0 0/1 * * * ?", onChange: function() { cronValue = $('#schedulerWidget').cron("value"); console.log('Cron Updated Value: '+cronValue); $("#schedulerWidgetSelctedValue").text(cronValue); }, customValues: { "5 Minutes" : "0 0/5 * * * ?" } });
答案 1 :(得分:1)
在使用以下工具https://github.com/jmrozanec/cron-utils
调度Quartz作业之前,我使用了后台转换以及以下助手类
public class CronTimeDefinition {
public static final String CRON_SCHEME_MANUAL = "manual";
private boolean isManual = false;
private boolean isCorrect = false;
private String unixDefinition;
public CronTimeDefinition(String definition) {
if (definition.equals(CRON_SCHEME_MANUAL)) {
isCorrect = true;
isManual = true;
} else {
CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(CronType.UNIX);
CronValidator oValidator = new CronValidator(cronDefinition);
if (oValidator.isValid(definition)) {
unixDefinition = definition;
isCorrect = true;
isManual = false;
}
}
}
public boolean isManual() {
return isManual;
}
public static boolean isManual(String crondef) {
return crondef.contains(CRON_SCHEME_MANUAL);
}
public boolean isCorrect() {
return isCorrect;
}
public String getUnixDefinition() {
return unixDefinition;
}
public String getQuartzDefinition() {
return cronConversion(unixDefinition, CronType.UNIX, CronType.QUARTZ);
}
/**
* Cron format converter
*
* @param a_cronStrin gcron string to convert
* @param a_from input type
* @param a_to : output type
*
* @return converted format cron
*/
private static String cronConversion(String a_cronString, CronType a_from, CronType a_to) {
String result = "";
if ((a_from == CronType.UNIX) && (a_to == CronType.QUARTZ)) {
String[] cronSplited = a_cronString.split("\\s+");
if ("*".equals(cronSplited[2])) {
cronSplited[2] = "?";
} else if ("*".equals(cronSplited[4])) {
cronSplited[4] = "?";
}
String[] days = cronSplited[4].split("[,-\\-]+");
for (int i = 0; i < days.length; i++) {
if (StringUtils.isNumeric(days[i])) {
cronSplited[4] = cronSplited[4].replace(days[i], String.valueOf(Integer.parseInt(days[i]) + 1));
days = cronSplited[4].split("[,-\\-]+");
}
}
// Force 0 for seconds field
result = "0 " + String.join(" ", cronSplited) + " *";
} else if ((a_from == CronType.QUARTZ) && (a_to == CronType.UNIX)) {
result = a_cronString.substring(2, a_cronString.length() - 2).replace("?", "*");
}
return result;
}
@Override
public String toString() {
if (isCorrect) {
if (isManual)
return "manual";
else
return unixDefinition;
} else {
return "incorrect definition : " + unixDefinition;
}
}