/// <summary> /// Sets the date pair to the start and end dates based on the type of date range sent /// </summary> /// <param name="datePair">The date pair to set</param> /// <param name="dateRange">The DateRange to use to get the start date for</param> /// <param name="date">The date to to get the start from</param> /// <param name="secondsForTimeSpan">The number of seconds to add for the timespan version - defaults to 60</param> public static void SetStartEndDatePair(IStartEndDatePair datePair, string dateRange, DateTime date, int secondsForTimeSpan = 60) { switch (dateRange) { case DateRange.Year: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddYears(1); break; case DateRange.Month: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddMonths(1); break; case DateRange.Week: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddDays(7); break; case DateRange.Day: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddDays(1); break; case DateRange.Hour: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddHours(1); break; case DateRange.HalfHour: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddMinutes(30); break; case DateRange.FifteenMinutes: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddMinutes(15); break; case DateRange.TenMinutes: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddMinutes(10); break; case DateRange.FiveMinutes: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddMinutes(5); break; case DateRange.Timespan: datePair.StartDate = date; datePair.EndDate = datePair.StartDate.AddSeconds(secondsForTimeSpan); break; } }
/// <summary> /// Sets the date pair to the start and end dates based on the type of date range sent /// </summary> /// <param name="datePair">The date pair to set</param> /// <param name="dateRange">The DateRange to use to get the start date for</param> /// <param name="date">The date to to get the start from</param> public static void BaseStartEndDatePair(IStartEndDatePair datePair, string dateRange, DateTime date, CultureInfo culture = null) { switch (dateRange) { case DateRange.Year: datePair.StartDate = new DateTime(date.Year, 1, 1); datePair.EndDate = datePair.StartDate.AddYears(1); break; case DateRange.Month: datePair.StartDate = new DateTime(date.Year, date.Month, 1); datePair.EndDate = datePair.StartDate.AddMonths(1); break; case DateRange.Week: if (culture == null) { culture = System.Threading.Thread.CurrentThread.CurrentCulture; } datePair.StartDate = new DateTime(date.Year, date.Month, date.Day); var diff = datePair.StartDate.DayOfWeek - culture.DateTimeFormat.FirstDayOfWeek; if (diff < 0) { diff += 7; } datePair.StartDate = datePair.StartDate.AddDays(-diff); datePair.EndDate = datePair.StartDate.AddDays(6); break; case DateRange.Day: datePair.StartDate = new DateTime(date.Year, date.Month, date.Day); datePair.EndDate = datePair.StartDate.AddDays(1); break; case DateRange.Hour: datePair.StartDate = new DateTime(date.Year, date.Month, date.Day, date.Hour, 0, 0); datePair.EndDate = datePair.StartDate.AddHours(1); break; case DateRange.HalfHour: var halfHourMin = (date.Minute >= 30) ? 30 : 0; datePair.StartDate = new DateTime(date.Year, date.Month, date.Day, date.Hour, halfHourMin, 0); datePair.EndDate = datePair.StartDate.AddMinutes(30); break; case DateRange.FifteenMinutes: var fifteenMin = (date.Minute >= 45) ? 45 : (date.Minute >= 30) ? 30 : (date.Minute >= 15) ? 15 : 0; datePair.StartDate = new DateTime(date.Year, date.Month, date.Day, date.Hour, fifteenMin, 0); datePair.EndDate = datePair.StartDate.AddMinutes(15); break; case DateRange.TenMinutes: var tenMin = (date.Minute >= 50) ? 50 : (date.Minute >= 40) ? 40 : (date.Minute >= 30) ? 30 : (date.Minute >= 20) ? 20 : (date.Minute >= 10) ? 10 : 0; datePair.StartDate = new DateTime(date.Year, date.Month, date.Day, date.Hour, tenMin, 0); datePair.EndDate = datePair.StartDate.AddMinutes(10); break; case DateRange.FiveMinutes: var fiveMin = (date.Minute >= 55) ? 55 : (date.Minute >= 50) ? 50 : (date.Minute >= 45) ? 45 : (date.Minute >= 40) ? 40 : (date.Minute >= 35) ? 35 : (date.Minute >= 30) ? 30 : (date.Minute >= 25) ? 25 : (date.Minute >= 20) ? 20 : (date.Minute >= 15) ? 15 : (date.Minute >= 10) ? 10 : (date.Minute >= 5) ? 5 : 0; datePair.StartDate = new DateTime(date.Year, date.Month, date.Day, date.Hour, fiveMin, 0); datePair.EndDate = datePair.StartDate.AddMinutes(5); //not available break; case DateRange.Timespan: //not available break; } }
/// <summary> /// Sets the date pair to the start and end dates based on the type of date range sent, defaults the date to the UTC Now DateTime /// </summary> /// <param name="datePair">The date pair to set</param> /// <param name="dateRange">The DateRange to use to get the start date for</param> public static void BaseStartEndDatePair(IStartEndDatePair datePair, string dateRange) { BaseStartEndDatePair(datePair, dateRange, DateTime.UtcNow); }
/// <summary> /// Sets the date pair to the start and end dates based on the type of date range sent, defaults the date to the UTC Now DateTime /// </summary> /// <param name="datePair">The date pair to set</param> /// <param name="dateRange">The DateRange to use to get the start date for</param> /// <param name="secondsForTimeSpan">The number of seconds to add for the timespan version - defaults to 60</param> public static void SetStartEndDatePair(IStartEndDatePair datePair, string dateRange, int secondsForTimeSpan = 60) { SetStartEndDatePair(datePair, dateRange, DateTime.UtcNow, secondsForTimeSpan); }