/// <summary> /// 指定一年内的具体月份,从startTime开始,endTime结束,默认每个月1号0时0分0秒执行一次 /// </summary> /// <param name="time"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <returns></returns> public static CronScheduleTime SetMonthCycle(this CronScheduleTime time, int startTime, int endTime) { if (startTime.IsOverDefaultRange(1, 12) || endTime.IsOverDefaultRange(1, 12) || startTime > endTime) { throw new Exception("设置的周期时间异常"); } time.Second = time.Second.SetDefaultValue(); time.Minute = time.Minute.SetDefaultValue(); time.Hour = time.Hour.SetDefaultValue(); time.SetDayDefaultValue(); time.Month = $"{startTime}-{endTime}"; return(time); }
/// <summary> /// 指定一年内里的具体月份,每经过该月份执行一次,默认该月份的1号0时0分0秒 /// </summary> /// <param name="time"></param> /// <param name="months"></param> /// <returns></returns> public static CronScheduleTime SetSpecificMonth(this CronScheduleTime time, params int[] months) { Array.ForEach(months, i => { if (i.IsOverDefaultRange(1, 12)) { throw new IndexOutOfRangeException($"设置的日期参数{i}异常"); } }); time.Second = time.Second.SetDefaultValue(); time.Minute = time.Minute.SetDefaultValue(); time.Hour = time.Hour.SetDefaultValue(); time.SetDayDefaultValue(); time.Month = string.Join(",", months); return(time); }
/// <summary> /// 指定一年内的执行间隔时间gapTime,延后开始时间startTime,默认为每个月1号0时0分0秒执行一次 /// </summary> /// <param name="time"></param> /// <param name="gapTime"></param> /// <param name="startTime"></param> /// <returns></returns> public static CronScheduleTime SetMonthGap(this CronScheduleTime time, int gapTime, int startTime = 1) { if (gapTime.IsOverDefaultRange(1, 12)) { throw new Exception("设置的间隔时间异常"); } if (startTime.IsOverDefaultRange(1, 12)) { throw new Exception("设置的延后开始时间异常"); } time.Second = time.Second.SetDefaultValue(); time.Minute = time.Minute.SetDefaultValue(); time.Hour = time.Hour.SetDefaultValue(); time.SetDayDefaultValue(); time.Month = $"{startTime}/{gapTime}"; return(time); }