我试图根据当前季度和年份获得之前,当前和未来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();
}
答案 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开始重新计算。
答案 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++;
}