c.DateRangeHelper
Wed Sep 22 2021 14:30:08 GMT+0000 (UTC)
using System; /// <summary> /// Common DateTime Methods. /// </summary> /// public enum Quarter { First = 1, Second = 2, Third = 3, Fourth = 4 } public enum Month { January = 1, February = 2, March = 3, April = 4, May = 5, June = 6, July = 7, August = 8, September = 9, October = 10, November = 11, December = 12 } public enum DateRangeType { [StringValue("Today")] Today = 1, [StringValue("Yesterday")] Yesterday = 2 , [StringValue("Last 7 Days")] Last7Days = 3 , [StringValue("Last Week")] LastWeek = 4 , [StringValue("Month to Date")] MonthToDate = 5 , [StringValue("Previous Month")] PreviousMonth = 6 , [StringValue("Year to Date")] YearToDate = 7 , [StringValue("Previous Year")] PreviousYear = 8 } namespace Pqdm.Common { public class DateRangeHelper { private DateRangeType _type { get; set; } public static readonly DateTime SqlMinDate = new DateTime(1753, 1, 1); public static readonly DateTime SqlMaxDate = new DateTime(9999, 12, 31); public DateTime MinDate = SqlMinDate; public DateTime MaxDate = SqlMaxDate; #region Quarters public static DateTime GetStartOfQuarter(int Year, Quarter Qtr) { if (Qtr == Quarter.First) // 1st Quarter = January 1 to March 31 return new DateTime(Year, 1, 1, 0, 0, 0, 0); else if (Qtr == Quarter.Second) // 2nd Quarter = April 1 to June 30 return new DateTime(Year, 4, 1, 0, 0, 0, 0); else if (Qtr == Quarter.Third) // 3rd Quarter = July 1 to September 30 return new DateTime(Year, 7, 1, 0, 0, 0, 0); else // 4th Quarter = October 1 to December 31 return new DateTime(Year, 10, 1, 0, 0, 0, 0); } public static DateTime GetEndOfQuarter(int Year, Quarter Qtr) { if (Qtr == Quarter.First) // 1st Quarter = January 1 to March 31 return new DateTime(Year, 3, DateTime.DaysInMonth(Year, 3), 23, 59, 59, 999); else if (Qtr == Quarter.Second) // 2nd Quarter = April 1 to June 30 return new DateTime(Year, 6, DateTime.DaysInMonth(Year, 6), 23, 59, 59, 999); else if (Qtr == Quarter.Third) // 3rd Quarter = July 1 to September 30 return new DateTime(Year, 9, DateTime.DaysInMonth(Year, 9), 23, 59, 59, 999); else // 4th Quarter = October 1 to December 31 return new DateTime(Year, 12, DateTime.DaysInMonth(Year, 12), 23, 59, 59, 999); } public static Quarter GetQuarter(Month Month) { if (Month <= Month.March) // 1st Quarter = January 1 to March 31 return Quarter.First; else if ((Month >= Month.April) && (Month <= Month.June)) // 2nd Quarter = April 1 to June 30 return Quarter.Second; else if ((Month >= Month.July) && (Month <= Month.September)) // 3rd Quarter = July 1 to September 30 return Quarter.Third; else // 4th Quarter = October 1 to December 31 return Quarter.Fourth; } public static DateTime GetEndOfLastQuarter() { if ((Month)DateTime.Now.Month <= Month.March) //go to last quarter of previous year return GetEndOfQuarter(DateTime.Now.Year - 1, Quarter.Fourth); else //return last quarter of current year return GetEndOfQuarter(DateTime.Now.Year, GetQuarter((Month)DateTime.Now.Month)); } public static DateTime GetStartOfLastQuarter() { if ((Month)DateTime.Now.Month <= Month.March) //go to last quarter of previous year return GetStartOfQuarter(DateTime.Now.Year - 1, Quarter.Fourth); else //return last quarter of current year return GetStartOfQuarter(DateTime.Now.Year, GetQuarter((Month)DateTime.Now.Month)); } public static DateTime GetStartOfCurrentQuarter() { return GetStartOfQuarter(DateTime.Now.Year, GetQuarter((Month)DateTime.Now.Month)); } public static DateTime GetEndOfCurrentQuarter() { return GetEndOfQuarter(DateTime.Now.Year, GetQuarter((Month)DateTime.Now.Month)); } #endregion #region Weeks public static DateTime GetStartOfLastWeek() { int DaysToSubtract = (int)DateTime.Now.DayOfWeek + 7; DateTime dt = DateTime.Now.Subtract(System.TimeSpan.FromDays(DaysToSubtract)); return new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, 0); } public static DateTime GetEndOfLastWeek() { DateTime dt = GetStartOfLastWeek().AddDays(6); return new DateTime(dt.Year, dt.Month, dt.Day, 23, 59, 59, 999); } public static DateTime GetStartOfCurrentWeek() { int DaysToSubtract = (int)DateTime.Now.DayOfWeek; DateTime dt = DateTime.Now.Subtract(System.TimeSpan.FromDays(DaysToSubtract)); return new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, 0); } public static DateTime GetEndOfCurrentWeek() { DateTime dt = GetStartOfCurrentWeek().AddDays(6); return new DateTime(dt.Year, dt.Month, dt.Day, 23, 59, 59, 999); } #endregion #region Months public static DateTime GetStartOfMonth(Month Month, int Year) { return GetStartOfMonth(Year, (int)Month); } public static DateTime GetStartOfMonth(int Month, int Year) { return new DateTime(Year, Month, 1, 0, 0, 0, 0); } public static DateTime GetEndOfMonth(Month Month, int Year) { return GetEndOfMonth(Year, (int)Month); } public static DateTime GetEndOfMonth(int Month, int Year) { return new DateTime(Year, Month, DateTime.DaysInMonth(Year, Month), 23, 59, 59, 999); } public static DateTime GetStartOfLastMonth() { if (DateTime.Now.Month == 1) return GetStartOfMonth(Month.December, DateTime.Now.Year - 1); else return GetStartOfMonth(DateTime.Now.Month - 1, DateTime.Now.Year); } public static DateTime GetEndOfLastMonth() { if (DateTime.Now.Month == 1) return GetEndOfMonth(12, DateTime.Now.Year - 1); else return GetEndOfMonth(DateTime.Now.Month - 1, DateTime.Now.Year); } public static DateTime GetStartOfCurrentMonth() { return GetStartOfMonth(DateTime.Now.Month, DateTime.Now.Year); } public static DateTime GetEndOfCurrentMonth() { return GetEndOfMonth(DateTime.Now.Month, DateTime.Now.Year); } #endregion #region Years public static DateTime GetStartOfYear(int Year) { return new DateTime(Year, 1, 1, 0, 0, 0, 0); } public static DateTime GetEndOfYear(int Year) { return new DateTime(Year, 12, DateTime.DaysInMonth(Year, 12), 23, 59, 59, 999); } public static DateTime GetStartOfLastYear() { return GetStartOfYear(DateTime.Now.Year - 1); } public static DateTime GetEndOfLastYear() { return GetEndOfYear(DateTime.Now.Year - 1); } public static DateTime GetStartOfCurrentYear() { return GetStartOfYear(DateTime.Now.Year); } public static DateTime GetEndOfCurrentYear() { return GetEndOfYear(DateTime.Now.Year); } #endregion #region Days public static DateTime GetStartOfDay(DateTime date) { return new DateTime(date.Year, date.Month, date.Day, 0, 0, 0, 0); } public static DateTime GetEndOfDay(DateTime date) { return new DateTime(date.Year, date.Month, date.Day, 23, 59, 59, 999); } #endregion public static DateTime GetMinDate(DateRangeType type) { DateTime returnvalue = DateTime.MaxValue; switch (type) { case (DateRangeType.Today): returnvalue = GetStartOfDay(DateTime.Now); break; case (DateRangeType.Yesterday): returnvalue = GetStartOfDay(DateTime.Now.AddDays(-1)); break; case (DateRangeType.Last7Days): returnvalue = GetStartOfDay(DateTime.Now.AddDays(-7)); break; case (DateRangeType.LastWeek): returnvalue = GetStartOfLastWeek(); break; case (DateRangeType.MonthToDate): returnvalue = GetStartOfMonth(DateTime.Now.Month, DateTime.Now.Year); break; case (DateRangeType.PreviousMonth): returnvalue = GetStartOfMonth(DateTime.Now.AddMonths(-1).Month, DateTime.Now.AddMonths(-1).Year); break; case (DateRangeType.YearToDate): returnvalue = GetStartOfYear(DateTime.Now.Year); break; case (DateRangeType.PreviousYear): returnvalue = GetStartOfMonth(DateTime.Now.AddYears(-1).Month, DateTime.Now.AddYears(-1).Year); break; } return returnvalue; } public static DateTime GetMaxDate(DateRangeType type) { DateTime returnvalue = DateTime.MaxValue; switch (type) { case (DateRangeType.Today): returnvalue = GetEndOfDay(DateTime.Now); break; case (DateRangeType.Yesterday): returnvalue = GetEndOfDay(DateTime.Now.AddDays(-1)); break; case (DateRangeType.Last7Days): returnvalue= GetEndOfDay(DateTime.Now); break; case (DateRangeType.LastWeek): returnvalue = GetEndOfLastWeek(); break; case (DateRangeType.MonthToDate): returnvalue= GetEndOfDay(DateTime.Now); break; case (DateRangeType.PreviousMonth): returnvalue = GetEndOfMonth(DateTime.Now.AddMonths(-1).Month, DateTime.Now.AddMonths(-1).Year); break; case (DateRangeType.YearToDate): returnvalue = GetEndOfDay(DateTime.Now); break; case (DateRangeType.PreviousYear): returnvalue = GetEndOfMonth(DateTime.Now.AddYears(-1).Month, DateTime.Now.AddYears(-1).Year); break; } return returnvalue; } public DateRangeHelper(DateRangeType type) { _type = type; MinDate = GetMinDate(type); MaxDate = GetMaxDate(type); } } }
Comments