Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- namespace Impeltech.EDS.Helper
- {
- public class DateHelper
- {
- public static DateTime DatesReportingYear()
- {
- DateTime year;
- DateTime last;
- DatesReportingRange(DateTime.Now, out year, out last);
- return year;
- }
- public static DateTime DatesReportingLast()
- {
- DateTime year;
- DateTime last;
- DatesReportingRange(DateTime.Now, out year, out last);
- return last;
- }
- public static void DatesReportingRange(DateTime date, out DateTime year, out DateTime last)
- {
- var oldDate = date;
- if (date.Month != 4)
- {
- date = date.AddMonths(-1);
- }
- last = GetPreviosDate(date);
- year = GetPreviosDateByYear(last);
- if (oldDate.Month == 4)
- {
- last = year;
- }
- else
- {
- if (last.Month == year.Month && year.Day == last.Day)
- {
- DatesReportingRange(last, out year, out last);
- }
- }
- }
- /// <summary>
- /// Интервал в который попадает дата
- /// </summary>
- /// <param name="date"></param>
- /// <param name="from"></param>
- /// <param name="to"></param>
- public static void DateRange(DateTime date, out DateTime from, out DateTime to)
- {
- from = GetPreviosDate(date);
- to = GetNextDate(date);
- }
- public static DateTime MinDateCopy(DateTime date)
- {
- DateTime currentFrom;
- DateTime currentTo;
- DatesReportingRange(date, out currentFrom, out currentTo);
- return currentTo;
- }
- public static DateTime GetNextDate(DateTime start)
- {
- return GetNextDate(start, DateTime.MaxValue);
- }
- /// <summary>
- /// Ближайшая дата начала
- /// </summary>
- /// <param name="start"></param>
- /// <param name="Max"></param>
- /// <returns></returns>
- public static DateTime GetNextDate(DateTime start, DateTime Max)
- {
- var list = new List<DateTime>() {
- GetNextDateByYear(start, 31, 03),
- GetNextDateByYear(start, 30, 06),
- GetNextDateByYear(start, 30, 09),
- GetNextDateByYear(start, 31, 12)
- };
- var date = list.OrderBy(c => c).FirstOrDefault();
- if (date < Max)
- {
- return date;
- }
- else
- {
- return Max.AddDays(1);
- }
- }
- /// <summary>
- /// Ближайшая дата начала
- /// </summary>
- /// <param name="start"></param>
- /// <param name="Max"></param>
- /// <returns></returns>
- public static DateTime GetPreviosDate(DateTime start)
- {
- var list = new List<DateTime>() {
- GetPreviosByYear(start, 31, 03),
- GetPreviosByYear(start, 30, 06),
- GetPreviosByYear(start, 30, 09),
- GetPreviosByYear(start, 31, 12)
- };
- var date = list.OrderByDescending(c => c).FirstOrDefault();
- return date;
- }
- public static List<DateTime> GetLastQuarts()
- {
- var list = new List<DateTime>() {
- GetPreviosByYear(DateTime.Today, 31, 03),
- GetPreviosByYear(DateTime.Today, 30, 06),
- GetPreviosByYear(DateTime.Today, 30, 09),
- GetPreviosByYear(DateTime.Today, 31, 12)
- };
- return list.OrderBy(c => c).ToList();
- }
- private static DateTime GetPreviosDateByYear(DateTime date)
- {
- return new DateTime(date.Year - 1, 12, 31);
- }
- /// <summary>
- /// Ближайшая дата
- /// </summary>
- /// <param name="date">От </param>
- /// <param name="Month">месяй </param>
- /// <param name="Day">день</param>
- /// <returns></returns>
- private static DateTime GetNextDateByYear(DateTime date, int Day, int Month)
- {
- var nextDate = new DateTime(date.Year, Month, Day);
- if (nextDate <= date)
- {
- return nextDate.AddYears(1).AddDays(1);
- }
- else
- {
- return nextDate.AddDays(1);
- }
- }
- /// <summary>
- /// Ближайшая дата прошедшая
- /// </summary>
- /// <param name="date">От </param>
- /// <param name="Month">месяй </param>
- /// <param name="Day">день</param>
- /// <returns></returns>
- private static DateTime GetPreviosByYear(DateTime date, int Day, int Month)
- {
- var curDate = new DateTime(date.Year, Month, Day);
- if (date <= curDate)
- {
- return curDate.AddYears(-1);
- }
- else
- {
- return curDate;
- }
- }
- public static int GetDaysInYear(DateTime date)
- {
- var start = new DateTime(date.Year, 1, 1);
- var end = start.AddYears(1);
- return (int)(end - start).TotalDays;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement