### C# 算出時間區間(以日計算) ``` /// <summary> /// 時間區間比對 /// </summary> /// <param name="fromDate"></param> /// <param name="toDate"></param> /// <returns></returns> private IEnumerable<DateTime> DateRange(DateTime fromDate, DateTime toDate) { return Enumerable.Range(0, toDate.Subtract(fromDate).Days + 1) .Select(d => fromDate.AddDays(d)); } ``` ### 給定日期,列出當天從0000~2359所有10分鐘的時間清單 ``` /// <summary> /// 取得一天全部的10分鐘區間 /// </summary> /// <param name="fromDate"></param> /// <param name="toDate"></param> /// <returns></returns> public Dictionary<DateTime, DateTime> AllTenMinute(DateTime dt) { var result = new Dictionary<DateTime, DateTime>(); dt = dt.Date; for (DateTime _dt = dt; _dt < new DateTime(dt.Year,dt.Month,dt.Day,23,59,59); _dt = _dt.AddMinutes(10)) { result.Add(_dt, _dt.AddMinutes(10)); } return result; } ``` #### 給定日期,列出當天從0000~2359每小時的時間清單 ``` /// <summary> /// 小時區間 /// </summary> /// <returns>前一個區間起,前一個區間結</returns> public KeyValuePair<DateTime, DateTime> HourInterval(DateTime dt) { //從當日00:00開始算,無視現在時間 DateTime dtZeroTime = dt.Date; var result = new Dictionary<DateTime, DateTime>(); for (var day = dtZeroTime.Date; day <= dt; day = day.AddHours(1)) { result.Add(day.AddMinutes(-59), day.AddMinutes(-1)); } //取出最後一個時間,即為小時區間 return new KeyValuePair<DateTime, DateTime>(result.Last().Key, result.Last().Value); } ``` #### 給定日期,列出該日期的當周所有日期(星期日~六) ``` /// <summary> /// 周區間算法 /// </summary> /// <param name="fromDate"></param> /// <param name="toDate"></param> /// <returns></returns> public Dictionary<DateTime, DateTime> WeekRange(DateTime dateData) { var result = new Dictionary<DateTime, DateTime>(); for (int i = 7; i >= 1; i--) { var dayS = new DateTime(dateData.Year, dateData.Month, dateData.Day, 00, 00, 00); var dayE = new DateTime(dateData.Year, dateData.Month, dateData.Day, 23, 59, 59); result.Add(dayS, dayE); dateData = dateData.AddDays(-1); } return result; } ```