public void DateRange() { DateRangeStruct dates = pastDate.DateRange(DateRangeOptions.Week); Assert.AreEqual("31-DEC-2017", dates.startDate.DateFormat(DateFormats.European)); Assert.AreEqual("06-JAN-2018", dates.endDate.DateFormat(DateFormats.European)); }
/// <summary><![CDATA[ /// Returns a struct with a start and end date for a given start date and interval. /// ]]></summary> /// <example> /// If you pass the current date, and wish to know the first /// and last days of the week based on the current day: /// <code><![CDATA[ /// DateRangeStruct result = DateTime.Now.DateRange(TemporalHelpers.DateRangeOptions.Week); /// Response.Write ("The first day of the week is " + result.startDate.ToString() + /// ", and the last day of the week is " + result.endDate.ToString()); /// ]]></code> /// </example> /// <param name="relativeDate">Date to use as the basis for calculating the start and end date of the range.</param> /// <param name="dateRangeOptions">Enumeration value specifying which abstracted date range to evaluate. Note, weeks begin on Sunday and end on Saturday.</param> /// <returns>DateTimeStruct with the start and end date of the range.</returns> public static DateRangeStruct DateRange(this DateTime relativeDate, DateRangeOptions dateRangeOptions) { DateTime[] dates = { DateTime.Today, DateTime.Today }; DateTime myDate = relativeDate; switch (dateRangeOptions) { case DateRangeOptions.Week: if (myDate.DayOfWeek > 0) { myDate = myDate.AddDays(-1 * Convert.ToInt32(myDate.DayOfWeek)); } dates[0] = myDate; dates[1] = myDate.AddDays(6); break; case DateRangeOptions.Month: if (myDate.Day > 1) { myDate = myDate.AddDays(-1 * (myDate.Day - 1)); } dates[0] = myDate; dates[1] = myDate.AddMonths(1); dates[1] = dates[1].AddDays(-1); break; case DateRangeOptions.Quarter: if (myDate.Month < 4) { dates[0] = Convert.ToDateTime("1/1/" + myDate.Year.ToString()); } if (myDate.Month > 3 && myDate.Month < 7) { dates[0] = Convert.ToDateTime("4/1/" + myDate.Year.ToString()); } if (myDate.Month > 6 && myDate.Month < 10) { dates[0] = Convert.ToDateTime("7/1/" + myDate.Year.ToString()); } if (myDate.Month > 9) { dates[0] = Convert.ToDateTime("10/1/" + myDate.Year.ToString()); } dates[1] = dates[0].AddMonths(3); dates[1] = dates[1].AddDays(-1); break; case DateRangeOptions.Year: dates[0] = Convert.ToDateTime("1/1/" + myDate.Year.ToString()); dates[1] = Convert.ToDateTime("12/31/" + myDate.Year.ToString()); break; } DateRangeStruct result = new DateRangeStruct(); result.startDate = dates[0]; result.endDate = dates[1]; return(result); }