Advertisement
yambroskin

Untitled

Mar 17th, 2017
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.70 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5.  
  6. namespace Impeltech.EDS.Helper
  7. {
  8.     public class DateHelper
  9.     {
  10.  
  11.         public static DateTime DatesReportingYear()
  12.         {
  13.             DateTime year;
  14.             DateTime last;
  15.             DatesReportingRange(DateTime.Now, out year, out last);
  16.  
  17.  
  18.             return year;
  19.         }
  20.  
  21.         public static DateTime DatesReportingLast()
  22.         {
  23.             DateTime year;
  24.             DateTime last;
  25.             DatesReportingRange(DateTime.Now, out year, out last);
  26.  
  27.  
  28.             return last;
  29.         }
  30.  
  31.  
  32.         public static void DatesReportingRange(DateTime date, out DateTime year, out DateTime last)
  33.         {
  34.  
  35.             var oldDate = date;
  36.             if (date.Month != 4)
  37.             {
  38.                 date = date.AddMonths(-1);
  39.             }
  40.  
  41.             last = GetPreviosDate(date);
  42.             year = GetPreviosDateByYear(last);
  43.             if (oldDate.Month == 4)
  44.             {
  45.                 last = year;
  46.  
  47.             }
  48.             else
  49.             {
  50.  
  51.  
  52.                 if (last.Month == year.Month && year.Day == last.Day)
  53.                 {
  54.  
  55.                     DatesReportingRange(last, out year, out last);
  56.                 }
  57.             }
  58.  
  59.         }
  60.  
  61.         /// <summary>
  62.         /// Интервал в который попадает дата
  63.         /// </summary>
  64.         /// <param name="date"></param>
  65.         /// <param name="from"></param>
  66.         /// <param name="to"></param>
  67.         public static void DateRange(DateTime date, out DateTime from, out DateTime to)
  68.         {
  69.  
  70.             from = GetPreviosDate(date);
  71.             to = GetNextDate(date);
  72.         }
  73.  
  74.         public static DateTime MinDateCopy(DateTime date)
  75.         {
  76.  
  77.             DateTime currentFrom;
  78.             DateTime currentTo;
  79.             DatesReportingRange(date, out currentFrom, out currentTo);
  80.  
  81.  
  82.             return currentTo;
  83.         }
  84.  
  85.         public static DateTime GetNextDate(DateTime start)
  86.         {
  87.  
  88.             return GetNextDate(start, DateTime.MaxValue);
  89.         }
  90.  
  91.      
  92.  
  93.         /// <summary>
  94.         /// Ближайшая дата начала
  95.         /// </summary>
  96.         /// <param name="start"></param>
  97.         /// <param name="Max"></param>
  98.         /// <returns></returns>
  99.         public static DateTime GetNextDate(DateTime start, DateTime Max)
  100.         {
  101.             var list = new List<DateTime>() {
  102.  
  103.                 GetNextDateByYear(start, 31, 03),
  104.                 GetNextDateByYear(start, 30, 06),
  105.                 GetNextDateByYear(start, 30, 09),
  106.                 GetNextDateByYear(start, 31, 12)
  107.             };
  108.  
  109.             var date = list.OrderBy(c => c).FirstOrDefault();
  110.             if (date < Max)
  111.             {
  112.  
  113.  
  114.                 return date;
  115.             }
  116.             else
  117.             {
  118.  
  119.                 return Max.AddDays(1);
  120.             }
  121.         }
  122.  
  123.      
  124.  
  125.         /// <summary>
  126.         /// Ближайшая дата начала
  127.         /// </summary>
  128.         /// <param name="start"></param>
  129.         /// <param name="Max"></param>
  130.         /// <returns></returns>
  131.         public static DateTime GetPreviosDate(DateTime start)
  132.         {
  133.             var list = new List<DateTime>() {
  134.  
  135.                 GetPreviosByYear(start, 31, 03),
  136.                 GetPreviosByYear(start, 30, 06),
  137.                 GetPreviosByYear(start, 30, 09),
  138.                 GetPreviosByYear(start, 31, 12)
  139.             };
  140.  
  141.             var date = list.OrderByDescending(c => c).FirstOrDefault();
  142.             return date;
  143.         }
  144.  
  145.         public static List<DateTime> GetLastQuarts()
  146.         {
  147.             var list = new List<DateTime>() {
  148.  
  149.                 GetPreviosByYear(DateTime.Today, 31, 03),
  150.                 GetPreviosByYear(DateTime.Today, 30, 06),
  151.                 GetPreviosByYear(DateTime.Today, 30, 09),
  152.                 GetPreviosByYear(DateTime.Today, 31, 12)
  153.             };
  154.  
  155.             return list.OrderBy(c => c).ToList();
  156.         }
  157.  
  158.         private static DateTime GetPreviosDateByYear(DateTime date)
  159.         {
  160.  
  161.             return new DateTime(date.Year - 1, 12, 31);
  162.         }
  163.  
  164.         /// <summary>
  165.         /// Ближайшая дата
  166.         /// </summary>
  167.         /// <param name="date">От </param>
  168.         /// <param name="Month">месяй   </param>
  169.         /// <param name="Day">день</param>
  170.         /// <returns></returns>
  171.         private static DateTime GetNextDateByYear(DateTime date, int Day, int Month)
  172.         {
  173.  
  174.             var nextDate = new DateTime(date.Year, Month, Day);
  175.  
  176.             if (nextDate <= date)
  177.             {
  178.  
  179.                 return nextDate.AddYears(1).AddDays(1);
  180.             }
  181.             else
  182.             {
  183.  
  184.                 return nextDate.AddDays(1);
  185.             }
  186.         }
  187.  
  188.  
  189.  
  190.  
  191.         /// <summary>
  192.         /// Ближайшая дата прошедшая
  193.         /// </summary>
  194.         /// <param name="date">От </param>
  195.         /// <param name="Month">месяй   </param>
  196.         /// <param name="Day">день</param>
  197.         /// <returns></returns>
  198.         private static DateTime GetPreviosByYear(DateTime date, int Day, int Month)
  199.         {
  200.  
  201.             var curDate = new DateTime(date.Year, Month, Day);
  202.  
  203.             if (date <= curDate)
  204.             {
  205.  
  206.                 return curDate.AddYears(-1);
  207.             }
  208.             else
  209.             {
  210.  
  211.                 return curDate;
  212.             }
  213.         }
  214.  
  215.         public static int GetDaysInYear(DateTime date)
  216.         {
  217.  
  218.             var start = new DateTime(date.Year, 1, 1);
  219.             var end = start.AddYears(1);
  220.  
  221.             return (int)(end - start).TotalDays;
  222.         }
  223.     }
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement