/// <summary> /// 取得指定月份週數。 /// </summary> /// <param name="year">年份。</param> /// <param name="month">月份。</param> public static int WeeksInMonth(int year, int month) { DateTime oDate; int iDays; // 取得該月最後一天,並判斷日期為該月的第幾週 iDays = DateFunc.DaysInMonth(year, month); oDate = new DateTime(year, month, iDays); return(GetWeekOfYear(oDate)); }
/// <summary> /// 以指定日期為基準,取得指定範圍的日期區間。 /// </summary> /// <param name="value">指定日期。</param> /// <param name="unit">日期單位。</param> /// <param name="startDate">傳出起始日期。</param> /// <param name="endDate">傳出終止日期。</param> public static void GetDateRange(DateTime value, EDateUnit unit, out DateTime startDate, out DateTime endDate) { int iWeekday; int iDaysOfMonth; startDate = DateTime.MinValue; endDate = DateTime.MinValue; switch (unit) { case EDateUnit.Day: startDate = value; endDate = value; break; case EDateUnit.Week: iWeekday = Weekday(value); startDate = value.AddDays(iWeekday * -1); //取得該週的第一天 endDate = value.AddDays(7 - iWeekday); //取得該週的最後一天 break; case EDateUnit.Month: iDaysOfMonth = DateFunc.DaysInMonth(value); startDate = new DateTime(value.Year, value.Month, 1); //取得該月的第一天 endDate = new DateTime(value.Year, value.Month, iDaysOfMonth); //取得該月的最後一天 break; case EDateUnit.Quarter: GetQuarterRange(value, out startDate, out endDate); break; case EDateUnit.Year: startDate = new DateTime(value.Year, 1, 1); //取得該年度的第一天 endDate = new DateTime(value.Year, 12, 31); //取得該年度的最後一天 break; } }