我试着得到以前,现在和下三个季度的基础上的当前季度和年度。
例如:本季度=3年=2014年我想要产出,
第二季-第三季-2014年第四季-2014年第一季-2015年第二季-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();
}发布于 2014-08-08 03:36:53
按以下方式更改您的循环:
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++;
}Modulo 5将返回范围为0、4、0的值,可以解释为下一年的第1季度。因此,我们通过将currentQuater设置为1并递增currentYear来处理这种情况。这将通过每年的四个季度,在第五季度,它将转移到明年,并重新开始计数从1。
演示
发布于 2014-08-08 04:13:30
最后,在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++;
}https://stackoverflow.com/questions/25195538
复制相似问题