private static DateTime GetComparisonDate(DateTime dateComparison, EDateUnit unit, int isAfter) { DateTime newComparisonDate; switch (unit) { case (EDateUnit.Year): newComparisonDate = dateComparison.AddYears(isAfter); break; case (EDateUnit.Month): newComparisonDate = dateComparison.AddMonths(isAfter); break; case (EDateUnit.Day): newComparisonDate = dateComparison.AddDays(isAfter); break; default: throw new Exception("No unit specifed"); } return(newComparisonDate); }
/// <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; } }
/// <summary> /// 取得日期變數值。 /// </summary> /// <param name="dateTimeUnit">日期單位。</param> private string GetDateVariable(EDateUnit dateTimeUnit) { DateFunc.GetDateRange(DateTime.Now, dateTimeUnit, out DateTime oStartDate, out DateTime oEndTime); return(StrFunc.StrFormat("{0},{1}", oStartDate.ToString("yyyy/MM/dd"), oEndTime.ToString("yyyy/MM/dd"))); }