我遇到了问题,我的程序中写的逻辑在
之下while (lastDate.Month < DateTime.Today.Month - 1)//
{
lastDate= lastDate.AddMonths(1);
list.Add(lastDate);
}
当lastDate月份为Dec并且我在新年的1月或2月执行此代码时,此代码失败,因为12将永远不会大于1 0r 2。
我需要编写一个逻辑,我的循环可以遍历11月,12月,1月,2月等等。
我写了下面的代码正在运行但是我没有得到退出的线索,当lastDate和今天的日期之间的差异是2个月时循环应该退出。
if (lastDate.Month > DateTime.Today.Month && lastDate.Year < DateTime.Today.Year)
{
while (lastDate.Year <= DateTime.Today.Year)
{
lastDate= lastDate.AddMonths(1);
list.Add(lastDate);
}
}
请帮助我
答案 0 :(得分:1)
您将始终在列表中添加12个月,因此您可以使用for
循环:
for(var i = 0; i < 12; i++)
{
lastDate = lastDate.AddMonths(1);
list.Add(lastDate);
}
如您所知,您需要添加一个月的次数,根据月份和年份不需要有条件,但只需要一个计数器来执行此代码12次。
答案 1 :(得分:0)
这可能会有所帮助:
DateTime lastDate = DateTime.ParseExact("01/12/12", "dd/MM/yy", System.Globalization.CultureInfo.InvariantCulture);
List<DateTime> result = new List<DateTime>();
//iterate until the difference is two months
while (new DateTime((DateTime.Today - lastDate).Ticks).Month >= 2)
{
result.Add(lastDate);
lastDate = lastDate.AddMonths(1);
}
//result: 12/1/2012
// 1/1/2013
// 2/1/2013
// 3/1/2013
答案 2 :(得分:0)
希望这可以解决您的问题:
DateTime lastDate = new DateTime(2012, 1, 1);
List<DateTime> list = new List<DateTime>();
while (lastDate < (DateTime.Today.AddMonths(-3))) //difference between today and lastDate should be 2 month
{
lastDate = lastDate.AddMonths(1);
list.Add(lastDate);
}
答案 3 :(得分:0)
这会将lastDate中的12个DateTimes添加到您的列表中:)
list.AddRange(Enumerable.Range(0,12).Select(v => lastDate = lastDate.AddMonths(1)));