using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Model.Monitor { /// /// 周段 /// public class WeekSlot : JsonModel, ICronSlot { /// /// 是否从前一周开始 /// public bool Pre { get; set; } = false; /// /// 开始天数 周一到周日 1-7 /// public int Start { get; set; } = 1; /// /// 结束天数 周一到周日 1-7 /// public int End { get; set; } = 7; /// /// 验证 /// public bool Verify() { if (this.Start < 1 || this.Start > 7) return false; if (this.End < 1 || this.End > 7) return false; var start = this.Start; var end = this.End; if (this.Pre) { end += 7; } if (end - start > 6) return false; if (end - start < 1) return false; return true; } /// /// 获取开始时间 /// public DateTime GetStartTime(DateTime rhs) { var start = 1; if (Verify()) { start = this.Start; if (Pre) start = start - 7; } var dayOfWeek = (int)rhs.DayOfWeek; if (dayOfWeek == 0) dayOfWeek = 7; var startWeek = rhs.AddDays(1 - dayOfWeek); var dt = startWeek.AddDays(-1); dt = dt.AddDays(-7); dt = dt.Date; dt = dt.AddDays(start); return dt; } /// /// 获取结束时间 /// public DateTime GetEndTime(DateTime rhs) { var end = 7; if (Verify()) end = this.End; var dayOfWeek = (int)rhs.DayOfWeek; if (dayOfWeek == 0) dayOfWeek = 7; var startWeek = rhs.AddDays(1 - dayOfWeek); var dt = startWeek.Date; dt = dt.AddDays(-7); dt = dt.AddDays(end); return dt; } } }