Javascript 将jqcron cron格式转换为支持Quartz cron格式
我正在使用jqCron生成cron表达式来调度我的作业。每天9:30的cron表达式示例为“309***”Javascript 将jqcron cron格式转换为支持Quartz cron格式,javascript,jquery,cron,Javascript,Jquery,Cron,我正在使用jqCron生成cron表达式来调度我的作业。每天9:30的cron表达式示例为“309***” 石英支持的同一表达式的cron格式为“0 30 9**?” 是否有任何js实用程序可用于将jqCron生成的cron转换为支持石英格式的cron,反之亦然 在本例中,jqCron js内部方法被覆盖以支持Quartz格式。我们可以在不覆盖jqcronjs的情况下使用一些js实用程序功能吗 谢谢浏览下面的链接。我使用了这个API,它与石英兼容 有些人可以从上面的Git存储库下载源代码,并
石英支持的同一表达式的cron格式为“0 30 9**?” 是否有任何js实用程序可用于将jqCron生成的cron转换为支持石英格式的cron,反之亦然 在本例中,jqCron js内部方法被覆盖以支持Quartz格式。我们可以在不覆盖jqcronjs的情况下使用一些js实用程序功能吗
谢谢浏览下面的链接。我使用了这个API,它与石英兼容 有些人可以从上面的Git存储库下载源代码,并在他们的项目中包含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 * * * ?" } }); $('#schedulerWidget').cron({ 首字母:“0 0/1***?”, onChange:function(){ cronValue=$('#schedulerWidget')。cron(“value”); log('Cron更新值:'+cronValue); $(“#schedulerWidgetSelctedValue”).text(cronValue); }, 自定义值:{ “5分钟”:“0/5***” } });
在使用以下工具安排Quartz作业之前,我使用backoffice转换 和下面的助手类
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;
}
}
公共类CronTimeDefinition{
公共静态最终字符串CRON\u SCHEME\u MANUAL=“MANUAL”;
私有布尔isManual=false;
私有布尔值isCorrect=false;
私有字符串唯一定义;
公共CronTimeDefinition(字符串定义){
if(定义等于(CRON_方案_手册)){
isCorrect=正确;
isManual=真;
}否则{
CronDefinition CronDefinition=CronDefinitionBuilder.instanceDefinitionFor(CronType.UNIX);
CronValidator oValidator=新的CronValidator(cronDefinition);
if(oValidator.isValid(定义)){
unixDefinition=定义;
isCorrect=正确;
isManual=假;
}
}
}
公共布尔isManual(){
回归手动;
}
公共静态布尔isManual(字符串crondef){
返回crondef.contains(CRON_SCHEME_手册);
}
公共布尔值isCorrect(){
返回正确;
}
公共字符串getUnixDefinition(){
返回unixDefinition;
}
公共字符串getQuartzDefinition(){
返回cronConversion(unixDefinition,CronType.UNIX,CronType.QUARTZ);
}
/**
*Cron格式转换器
*
*@param a_crontrin gcron要转换的字符串
*@param a_来自输入类型
*@param a_to:输出类型
*
*@return转换格式cron
*/
私有静态字符串cronConversion(字符串a_cronString、CronType a_from、CronType a_to){
字符串结果=”;
if((a_-from==CronType.UNIX)和&(a_-to==CronType.QUARTZ)){
String[]cronSplited=a_cronString.split(\\s+);
如果(“*”.equals(cronSplited[2])){
cronSplited[2]=“?”;
}else如果(“*”.equals(cronSplited[4])){
cronSplited[4]=“?”;
}
字符串[]天=cronSplited[4]。拆分(“[,-\ \-]”);
对于(int i=0;i
Quartz cron格式的语法是什么?我假设更改并不像在最后一个字段中添加前导零并使用“?”而不是“*”
?Quartz格式是每月的第二个星期天的第二分钟小时。因此它只是有一个额外的前导秒列,并使用?
而不是*
?(我假设?
到处都是通配符,而不仅仅是DayOfWeek
列中的通配符。)棘手的部分是使用?从jqCron转换为石英Cron格式。它不是到处都是通配符。那么规范是什么?有文档吗?