public List <TimeJobModel> GetReverseTimeList(DateTime startTime, DateTime endTime) { List <TimeJobModel> result = new List <TimeJobModel>(); DateTime targetTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0); int startTimeCompare = DateTime.Compare(targetTime, startTime); targetTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 0); int endTimeCompare = DateTime.Compare(targetTime, endTime); if (startTimeCompare == 0 && endTimeCompare == 1) //시작시간 00:00:00, 종료시간 23:59:00 이전 { TimeJobModel TimeJobModel = new TimeJobModel(); TimeJobModel.StartTime = endTime; TimeJobModel.EndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59); result.Add(TimeJobModel); } else if (startTimeCompare == 0 && endTimeCompare <= 0) //시작시간 00:00:00, 종료시간 23:59:00 이후 { TimeJobModel TimeJobModel = new TimeJobModel(); TimeJobModel.StartTime = startTime; TimeJobModel.EndTime = endTime; result.Add(TimeJobModel); } else if (startTimeCompare == -1 && endTimeCompare <= 0) //시작시간 00:00:00 이후, 종료시간 23:59:00 이후 { TimeJobModel TimeJobModel = new TimeJobModel(); TimeJobModel.StartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0); TimeJobModel.EndTime = startTime; result.Add(TimeJobModel); } else if (startTimeCompare == -1 && endTimeCompare == 1) //시작시간 00:00:00 이후, 종료시간 23:59:00 이전 { TimeJobModel TimeJobModel1 = new TimeJobModel(); TimeJobModel TimeJobModel2 = new TimeJobModel(); TimeJobModel1.StartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0); TimeJobModel1.EndTime = startTime; TimeJobModel2.StartTime = endTime; TimeJobModel2.EndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59); result.Add(TimeJobModel1); result.Add(TimeJobModel2); } return(result); }
/// <summary> /// <para> /// 외부에서 대부분의 경우 호출하도록 되어있는 간접적 작업 추가 메서드. /// </para> /// timeJob에서의 시작시간에 시각 작업을 하는 것과 끝 시간에 끝 작업을 하는 두가지 작업을 동시에 추가한다. /// </summary> /// <param name="jobGroup"></param> /// <param name="timeJob"></param> public void AddJob(string jobGroup, TimeJobModel timeJob) { DateTime nowTime = DateTime.Now; int startTimeCompare = DateTime.Compare(timeJob.StartTime, nowTime); int endTimeCompare = DateTime.Compare(timeJob.StartTime, nowTime); if (startTimeCompare > 0 && endTimeCompare > 0) { StringBuilder startJobName = new StringBuilder(); StringBuilder endJobName = new StringBuilder(); startJobName.AppendFormat("J_S@{0}_{1}_{2}", timeJob.StartTime.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.Ticks, Guid.NewGuid().ToString()); endJobName.AppendFormat("J_E@{0}_{1}_{2}", timeJob.EndTime.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.Ticks, Guid.NewGuid().ToString()); AddJob(startJobName.ToString(), jobGroup, timeJob.StartTime, timeJob.StartJob); AddJob(endJobName.ToString(), jobGroup, timeJob.EndTime, timeJob.EndJob); } }