之前,现在和未来3个季度?

时间:2014-08-08 03:12:54

标签: c#

我试图根据当前季度和年份获得之前,当前和未来3个季度。

示例:当前季度= 3&年= 2014年 我想要输出,

Q2-2014 Q3-2014 Q4-2014 Q1-2015 Q2-2015

我正在努力,但输出正确,以及如何在上一季度加入?

static void Main(string[] args)
    {
        int generateQuater = 5;

        int currentQuater = 3;
        int currentYear = DateTime.Now.Year;

        List<string> lstQuaterYear = new List<string>();

        for (int i = generateQuater; i > 0; i--)
        {
            lstQuaterYear.Add(string.Format("Q{0}-{1}", currentQuater, currentYear));
            if (--currentQuater == 0)
            {
                currentQuater = 4;
                currentYear++;
            }
        }
        Console.ReadLine();
    }

2 个答案:

答案 0 :(得分:1)

按如下方式更改循环:

for (int i = 0; i < generateQuater; i++)
    {

        if(currentQuater%5 ==0)
        {
            currentQuater = 1;
            currentYear++;
        }

        lstQuaterYear.Add(string.Format("Q{0}-{1}", currentQuater%5, currentYear));

        currentQuater++;

    }

模5将返回[0,4]范围内的值。第0季度可以解释为明年的第1季度。因此,我们通过将currentQuater设置为1并递增currentYear来处理该情况。这将持续到每年的四个季度,并且在第五个季度,它将移至明年,并从1开始重新计算。

Demo

答案 1 :(得分:0)

最后这个代码在Tieson的帮助下。

问题:对受到问题的任何其他/ linq方法也欢迎。

int generateQuater = 4;
        int currentQuater = 3;
        int currentYear = DateTime.Now.Year;

        List<string> lstQuaterYear = new List<string>();
        //previous Quater
        lstQuaterYear.Add(String.Format("Q{0}-{1}", (currentQuater - 1) + (((1) / 4) * 4), currentYear - ((1) / 4)));

        for (int i = 0; i < generateQuater; i++)
        {

            if (currentQuater % 5 == 0)
            {
                currentQuater = 1;
                currentYear++;
            }
            //current and next 3 Quater
            lstQuaterYear.Add(string.Format("Q{0}-{1}", currentQuater % 5, currentYear));
            currentQuater++;
        }