【问题标题】:Need the sequence Order of Quarters of FY2011-12 based on a date given as input需要基于作为输入给出的日期的 FY2011-12 季度顺序
【发布时间】:2012-01-02 05:25:36
【问题描述】:

使用 C# 的 ASP.NET

以下是 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

请帮忙!!

【问题讨论】:

    标签: c# asp.net .net-3.5


    【解决方案1】:

    这里是函数

    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";
       }
    }
    

    【讨论】:

      【解决方案2】:

      希望这会有所帮助。

           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);
              }
          }
      

      问候。

      【讨论】:

      • 这太模棱两可了。需要一些简单的代码。这个太大了。我更新了我的问题。请看一看。
      • 只是不要看我创建季度的方式..您可以使用任何简单的方式将季度保存在列表中..只需专注于 DateRange 类...如果日期为 IsCurrentQuater,则返回 true在当前季度范围之间指定。
      • 只有四分之一可以使用 range.Where(r => r.IsCurrentQuater(DateTime.Now)).FirstOrDefault();
      • 顺便说一句,我在对象上使用了 Linq,因为您已指定您使用的是 .net 3.5.. linq 是让您轻松工作的唯一方法
      • 2011年仅以年份为例,便于理解。我需要将任何日期的季度信息作为输入。基本上我通过 datetime.now 作为输入,为此我需要输出为 'Q1' 或 'Q2' 或 Q3 或 Q4 的当前日期过去。
      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多