Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Common.Utilities
- {
- [System.Diagnostics.DebuggerStepThrough()]
- public class DateRangeUtil
- {
- //public static Dictionary<int, DateRange> DefaultDateRanges { get; private set; }
- public static List<DateRange> DefaultDateRanges { get; private set; }
- static DateRangeUtil()
- {
- DefaultDateRanges = CreateDefaultDateRanges();
- }
- static List<DateRange> CreateDefaultDateRanges()
- {
- List<DateRange> list = new List<DateRange>();
- list.Add(new DateRange(DateRangeType.All, "All"));
- list.Add(new DateRange(DateRangeType.Today, "Today"));
- list.Add(new DateRange(DateRangeType.ThisWeek, "This Week"));
- list.Add(new DateRange(DateRangeType.ThisWeektodate, "This Week-to-date"));
- list.Add(new DateRange(DateRangeType.ThisMonth, "This Month"));
- list.Add(new DateRange(DateRangeType.ThisMonthtodate, "This Month-to-date"));
- list.Add(new DateRange(DateRangeType.ThisQuarter, "This Quarter"));
- list.Add(new DateRange(DateRangeType.ThisQuartertodate, "This Quarter-to-date"));
- list.Add(new DateRange(DateRangeType.ThisYear, "This Year"));
- list.Add(new DateRange(DateRangeType.ThisYeartodate, "This Year-to-date"));
- list.Add(new DateRange(DateRangeType.Yesterday, "Yesterday"));
- list.Add(new DateRange(DateRangeType.LastWeek, "Last Week"));
- list.Add(new DateRange(DateRangeType.LastMonth, "Last Month"));
- list.Add(new DateRange(DateRangeType.LastQuarter, "Last Quarter"));
- list.Add(new DateRange(DateRangeType.LastYear, "Last Year"));
- foreach (DateRange range in list)
- CalculateDateRange(range);
- return list;
- }
- public static void CalculateDateRange(DateRange range)
- {
- CalculateDateRange(range, DateTime.Today);
- }
- public static void CalculateDateRange(DateRange range, DateTime todayDate)
- {
- DateTime beginDt = DateTime.MinValue;
- DateTime endDt = DateTime.MinValue;
- if (GetDates(range.RangeType, todayDate, out beginDt, out endDt))
- {
- range.BeginDate = beginDt;
- range.EndDate = endDt;
- }
- }
- public static List<DateRange> GetDateRanges()
- {
- return GetDateRanges(DateTime.Today);
- }
- public static List<DateRange> GetDateRanges(DateTime todayDate)
- {
- List<DateRange> list = new List<DateRange>(DefaultDateRanges);
- foreach (DateRange range in DefaultDateRanges)
- CalculateDateRange(range, todayDate);
- return list;
- }
- public static bool GetDates(DateRangeType rangeType, out DateTime startDate, out DateTime stopDate)
- {
- return GetDates(rangeType, DateTime.Today, out startDate, out stopDate);
- }
- /// <summary>
- /// Based on iDateRangeName, returns 2 dates the are set to the correct start and stop dates.
- /// </summary>
- /// <param name="dateRangeName">
- /// Specifies the date range to set to the dates for. Must be one of the DateRangeNames elements.
- /// </param>
- /// <param name="startDate">
- /// On function return, set to the starting date based on dateRangeName.
- /// </param>
- /// <param name="stopDate">
- /// On function return, set to the stopping date based on dateRangeName.
- /// </param>
- public static bool GetDates(DateRangeType rangeType, DateTime todayDate, out DateTime startDate, out DateTime stopDate)
- {
- DateTime StartDate = todayDate;
- DateTime StopDate = todayDate;
- bool result = true;
- // All.
- if (rangeType == DateRangeType.All)
- {
- StartDate = new DateTime(1900, 1, 1);
- StopDate = new DateTime(2100, 12, 31);
- }
- // Today.
- if (rangeType == DateRangeType.Today)
- {
- StartDate = DateTime.Today;
- StopDate = DateTime.Today.AddDays(1);
- }
- // This Week.
- if (rangeType == DateRangeType.ThisWeek)
- {
- // Set StartDate to most recent Sunday, first day of the current week.
- DateTime Dt = DateTime.Today;
- while (Dt.DayOfWeek != DayOfWeek.Sunday)
- Dt = Dt.AddDays(-1);
- StartDate = Dt;
- // Set StopDate to the last day of this week, which is Saturday.
- Dt = DateTime.Today;
- while (Dt.DayOfWeek != DayOfWeek.Saturday)
- Dt = Dt.AddDays(1);
- StopDate = Dt;
- }
- // This Week-to-date.
- if (rangeType == DateRangeType.ThisWeektodate)
- {
- // Set StartDate to most recent Sunday, first day of the current week.
- DateTime Dt = DateTime.Today;
- while (Dt.DayOfWeek != DayOfWeek.Sunday)
- Dt = Dt.AddDays(-1);
- StartDate = Dt;
- // Set StopDate to today.
- StopDate = DateTime.Today;
- }
- // This Month.
- if (rangeType == DateRangeType.ThisMonth)
- {
- // Set StartDate to first of current month.
- StartDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
- // Set StopDate to last date of current month.
- DateTime Dt = new DateTime(DateTime.Today.Year, DateTime.Today.AddMonths(1).Month, 1).AddDays(-1);
- StopDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, Dt.Day);
- }
- // This Month-to-date.
- if (rangeType == DateRangeType.ThisMonthtodate)
- {
- // Set StartDate to first of current month.
- StartDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
- // Set StopDate to today.
- StopDate = DateTime.Today;
- }
- // This Quarter.
- if (rangeType == DateRangeType.ThisQuarter)
- {
- // Set StartDate to first day of the 1st month of this quarter.
- int CurrentMonth = DateTime.Today.Month;
- DateTime Dt = DateTime.Today;
- while ((CurrentMonth % 3) != 0)
- {
- Dt = Dt.AddMonths(-1);
- CurrentMonth--;
- }
- StartDate = new DateTime(Dt.Year, Dt.Month, 1);
- // Set StopDate to last date of current month.
- Dt = StartDate.AddMonths(4).AddDays(-1);
- StopDate = Dt;
- }
- // This Quarter-to-date.
- if (rangeType == DateRangeType.ThisQuartertodate)
- {
- // Set StartDate to first day of the 1st month of this quarter.
- int CurrentMonth = DateTime.Today.Month;
- DateTime Dt = DateTime.Today;
- while ((CurrentMonth % 3) != 0)
- {
- Dt = Dt.AddMonths(-1);
- CurrentMonth--;
- }
- StartDate = new DateTime(Dt.Year, Dt.Month, 1);
- // Set StopDate to today.
- StopDate = DateTime.Today;
- }
- // This Year.
- if (rangeType == DateRangeType.ThisYear)
- {
- // Set StartDate to first day of the year.
- StartDate = new DateTime(DateTime.Today.Year, 1, 1);
- // Set StopDate to last day of the year.
- StopDate = new DateTime(StartDate.AddYears(1).Year, 1, 1).AddDays(-1);
- }
- // This Year-to-date.
- if (rangeType == DateRangeType.ThisYeartodate)
- {
- // Set StartDate to first day of the year.
- StartDate = new DateTime(DateTime.Today.Year, 1, 1);
- // Set StopDate to today.
- StopDate = DateTime.Today;
- }
- // Yesterday.
- if (rangeType == DateRangeType.Yesterday)
- {
- // Set StartDate to yesterday.
- StartDate = DateTime.Today.AddDays(-1);
- // Set StopDate to yesterday.
- StopDate = DateTime.Today.AddDays(-1);
- }
- // Last Week.
- if (rangeType == DateRangeType.LastWeek)
- {
- // Set StartDate to the first day of last week.
- StartDate = DateTime.Today.AddDays(-7);
- while (StartDate.DayOfWeek != System.DayOfWeek.Sunday)
- StartDate = StartDate.AddDays(-1);
- // Set StopDate to the last day of last week, which was last Saturday.
- // If the current day is Saturday, then go to the previous Saturday.
- StopDate = DateTime.Today.AddDays(-1);
- while (StopDate.DayOfWeek != System.DayOfWeek.Saturday)
- StopDate = StopDate.AddDays(-1);
- }
- // Last Month.
- if (rangeType == DateRangeType.LastMonth)
- {
- // Set StartDate to the first day of last month.
- StartDate = new DateTime(DateTime.Today.AddMonths(-1).Year, DateTime.Today.AddMonths(-1).Month, 1);
- // Set StopDate to the last day of last month.
- StopDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(-1);
- }
- // Last Quarter.
- if (rangeType == DateRangeType.LastQuarter)
- {
- // Set StartDate to the first day of the first month of the previous quarter.
- int CurrentMonth = DateTime.Today.Month;
- DateTime Dt = DateTime.Today;
- while ((CurrentMonth % 3) != 0)
- {
- Dt = Dt.AddMonths(-1);
- CurrentMonth--;
- }
- StartDate = Dt.AddMonths(-3);
- // Set StopDate to the last day of last month.
- StopDate = StartDate.AddMonths(4).AddDays(-1);
- }
- // Last Year.
- if (rangeType == DateRangeType.LastQuarter)
- {
- // Set StartDate to first day of the last year.
- StartDate = new DateTime(DateTime.Today.AddYears(-1).Year, 1, 1);
- // Set StopDate to the last day of the last year.
- StopDate = StartDate.AddYears(1).AddDays(-1);
- }
- //// Custom.
- //if (dateRangeName == DateRangeNames[15])
- //{
- // // Don't return anything.
- // result = false;
- //}
- startDate = StartDate;
- stopDate = StopDate;
- return result;
- }
- /// <summary>
- /// Returns a starting date based on today's date, for the dateRangeName.
- /// </summary>
- public static DateTime GetStartDate(DateRangeType rangeType)
- {
- DateTime StartDate;
- DateTime StopDate;
- GetDates(rangeType, out StartDate, out StopDate);
- return StartDate;
- }
- /// <summary>
- /// Returns a stopping date based on today's date, for the dateRangeName.
- /// </summary>
- public static DateTime GetStopDate(DateRangeType rangeType)
- {
- DateTime StartDate;
- DateTime StopDate;
- GetDates(rangeType, out StartDate, out StopDate);
- return StopDate;
- }
- }
- public class DateRange
- {
- public string Name { get; set; }
- public DateRangeType RangeType { get; set; }
- public DateTime? BeginDate { get; set; }
- public DateTime? EndDate { get; set; }
- public DateRange(DateRangeType rangeType, string name)
- : this(rangeType, name, null, null) { }
- public DateRange(DateRangeType rangeType, string name, DateTime? beginDt, DateTime? endDt)
- {
- this.RangeType = rangeType;
- this.Name = name;
- this.BeginDate = beginDt;
- this.EndDate = endDt;
- }
- }
- public enum DateRangeType
- {
- All = 0,
- Today = 1,
- ThisWeek = 2,
- ThisWeektodate = 3,
- ThisMonth = 4,
- ThisMonthtodate = 5,
- ThisQuarter = 6,
- ThisQuartertodate = 7,
- ThisYear = 8,
- ThisYeartodate = 9,
- Yesterday = 10,
- LastWeek = 11,
- LastMonth = 12,
- LastQuarter = 13,
- LastYear = 14,
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment