using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Model.Monitor { /// /// 小时段 /// public class HourSlot : JsonModel, ICronSlot { /// /// 是否从前一小时开始 /// public bool Pre { get; set; } = false; /// /// 开始分钟 0-59 /// public int Start { get; set; } = 0; /// /// 结束分钟 1-60 /// public int End { get; set; } = 60; /// /// 验证 /// /// public bool Verify() { if (this.Start < 0 || this.Start > 59) return false; if (this.End < 1 || this.End > 60) return false; var start = this.Start; var end = this.End; if (this.Pre) { end += 60; } if (end - start > 60) return false; if (end - start <= 0) return false; return true; } /// /// 获取开始时间 /// public DateTime GetStartTime(DateTime rhs) { var start = 0; if (Verify()) { start = this.Start; if (Pre) start = start - 60; } var dt = new DateTime(rhs.Year, rhs.Month, rhs.Day, rhs.Hour, 0, 0); dt = dt.AddHours(-1); dt = dt.AddSeconds(start); return dt; } /// /// 获取结束时间 /// public DateTime GetEndTime(DateTime rhs) { var end = 60; if (Verify()) end = this.End; var dt = new DateTime(rhs.Year, rhs.Month, rhs.Day, rhs.Hour, 0, 0); dt = dt.AddHours(-1); dt = dt.AddSeconds(end); return dt; } } }