JobSchedule(string value, CrontabValueTimeGroup timeGroup, CrontabValueDateGroup dateGroup, CronWeekValue week) { this.timeGroup = timeGroup; this.dateGroup = dateGroup; this.week = week; this.Value = value; }
/// <summary> /// 解析调度的值 /// </summary> /// <param name="value">表达式值</param> /// <param name="schedule">进度表</param> /// <returns></returns> public static bool TryParse(string value, out JobSchedule schedule) { schedule = null; if (string.IsNullOrEmpty(value))//空表达式 { return(false); } string[] array = value.Split(Separator, StringSplitOptions.RemoveEmptyEntries); if (array.Length == 0) { return(false); } var v1 = array[0]; if (CronMinuteValue.TryParse(v1, out CronMinuteValue minute)) { CronHourValue hour = null; CronDayValue day = null; CronMonthValue month = null; CronWeekValue week = null; if (array.Length >= 2) { if (!CronHourValue.TryParse(array[1], out hour)) { return(false); } } if (array.Length >= 3) { if (!CronDayValue.TryParse(array[2], out day)) { return(false); } } if (array.Length >= 4) { if (!CronMonthValue.TryParse(array[3], out month)) { return(false); } } if (array.Length >= 5) { if (!CronWeekValue.TryParse(array[4], out week)) { return(false); } } if (array.Length >= 6) { return(false); } var timeGroup = new CrontabValueHourMinuteGroup(minute, hour); var dateGroup = new CrontabValueMonthDayGroup(day, month); schedule = new JobSchedule(value, timeGroup, dateGroup, week); return(true); } else if (CronTimeRangeValue.TryParse(v1, out CronTimeRangeValue timeRange)) { CronDayValue day = null; CronMonthValue month = null; CronWeekValue week = null; if (array.Length >= 2) { if (!CronDayValue.TryParse(array[1], out day)) { return(false); } } if (array.Length >= 3) { if (!CronMonthValue.TryParse(array[2], out month)) { return(false); } } if (array.Length >= 4) { if (!CronWeekValue.TryParse(array[3], out week)) { return(false); } } if (array.Length >= 5) { return(false); } var timeGroup = new CrontabValueTimeRangeGroup(timeRange); var dateGroup = new CrontabValueMonthDayGroup(day, month); schedule = new JobSchedule(value, timeGroup, dateGroup, week); return(true); } else { return(false); } }