需要根据输入的日期排列 2011-12 财年的季度顺序

本文关键字:2011-12 顺序 季度 排列 日期 输入 | 更新日期: 2023-09-27 18:19:16

ASP.NET 使用 C#

以下是2011-12财政年度的季度

April 2011 to June2011 - Q1
July2011 to Sep2011    - Q2
Oct2011 to Dec2011     - Q3
Jan2012 to March 2012  - Q4

编辑

如果我给出一个日期作为输入,那么我需要该月季度的输出:

让我们考虑一个日期,因为输入是02-Jan-2012

然后我需要输出作为Q4

让我们以另一个日期作为输入:31May2012

为此,我需要输出作为Q1

请帮忙!!

需要根据输入的日期排列 2011-12 财年的季度顺序

这是函数

public string GetQuarter(DateTime date)
{
   // we just need to check the month irrespective of the other parts(year, day)
   // so we will have all the dates with year part common
   DateTime dummyDate = new DateTime(1900, date.Month, date.Day);
   if (dummyDate < new DateTime(1900, 7, 1) && dummyDate >= new DateTime(1900, 4, 1))
   {
      return "Q1";
   }
   else if (dummyDate < new DateTime(1900, 10, 1) && dummyDate >= new DateTime(1900, 7, 1))
   {
       return "Q2";
   }
   else if (dummyDate < new DateTime(1900, 1, 1) && dummyDate >= new DateTime(1900, 10, 1))
   {
       return "Q3";
   }
   else
   {
       return "Q4";
   }
}

希望这能有所帮助。

     static void Main(string[] args)
        {
            List<DateRange> range = new List<DateRange>();
//temp filling the data
            DateTime start = new DateTime(2011, 4, 1);
            range.Add(new DateRange() {From=start,To = start.AddMonths(3).AddMilliseconds(-1),Name="Q1"});
            start = range.LastOrDefault().To.AddMilliseconds(1);
            range.Add(new DateRange() { From = start, To = start.AddMonths(3).AddMilliseconds(-1), Name = "Q2" });
            start = range.LastOrDefault().To.AddMilliseconds(1);
            range.Add(new DateRange() { From = start, To = start.AddMonths(3).AddMilliseconds(-1), Name = "Q3" });
            start = range.LastOrDefault().To.AddMilliseconds(1);
            range.Add(new DateRange() { From = start, To = start.AddMonths(3).AddMilliseconds(-1), Name = "Q4" });
            var order = range.OrderByDescending(r => r.IsCurrentQuater(DateTime.Now));
            foreach (var itm in order)
                Console.WriteLine(itm);
        }
    }
    public class DateRange
    {
        public string Name { get; set; }
        public DateTime From { get; set; }
        public DateTime To { get; set; }
        public bool IsCurrentQuater(DateTime date)
        {
            return date >= From && date <= To;
        }
        public override string ToString()
        {
            return string.Format("{0} - {1} to {2}", Name, From, To);
        }
    }

问候。