/// <summary> /// 获取下一个时间点 /// </summary> /// <param name="dayStrategy">时间策略</param> /// <param name="currDate">当前时间</param> /// <param name="minData">最小时间</param> /// <param name="hasExpectData">是否有找到期望的时间</param> /// <returns></returns> private static TimeSpan GetNextTimeConfig(TimerStrategyByDay dayStrategy, DateTime currDate, out TimeSpan minData, out bool hasExpectData) { if (dayStrategy.TimePoints == null || dayStrategy.TimePoints.Length == 0) { dayStrategy.TimePoints = new TimeSpan[] { new TimeSpan(0) } } ; minData = new TimeSpan(23, 59, 59); // 最小时间 var minExpectData = TimeSpan.MaxValue; // 大于当前时间的最小时间 foreach (var t in dayStrategy.TimePoints) { if (currDate.TimeOfDay < t && minExpectData >= t) // 找出比当前时间大的最小时间 { minExpectData = t; } if (minData > t) // 找出最小的一个时间,当前时间不参与运算 { minData = t; } } hasExpectData = minExpectData != TimeSpan.MaxValue; if (hasExpectData) // 如果找到比当前时间大的最小时间,则返回该时间 { return(minExpectData); } else { return(minData); } }
/// <summary> /// 时间是否到了 /// </summary> /// <param name="dayStrategy"></param> /// <param name="time"></param> /// <returns></returns> private static bool CheckTimeIsUp(TimerStrategyByDay dayStrategy, TimeSpan time) { time = time.Add(Deviation); var tmp = new TimeSpan(time.Hours, time.Minutes, time.Seconds); if (dayStrategy.TimePoints == null) { return(tmp.Ticks == 0); } else { foreach (var t in dayStrategy.TimePoints) { if (t == tmp) { return(true); } } return(false); } }