C# 在c中循环当前年份的月份到下一年的月份#

C# 在c中循环当前年份的月份到下一年的月份#,c#,asp.net,loops,C#,Asp.net,Loops,我面临一个问题,我程序中的逻辑如下 while (lastDate.Month < DateTime.Today.Month - 1)// { lastDate= lastDate.AddMonths(1); list.Add(lastDate); } while(lastDate.MonthDateTime.Today.Month&&lastDate.Year

我面临一个问题,我程序中的逻辑如下

while (lastDate.Month < DateTime.Today.Month - 1)//
  {
    lastDate= lastDate.AddMonths(1);
    list.Add(lastDate);
  }
while(lastDate.Month
当lastDate月是Dec时,此代码失败,我将在新年的1月或2月执行此代码,因为12永远不会大于1 0r 2

我需要写一个逻辑,我的循环可以遍历11月、12月、1月、2月等等

我已经写了下面的代码,这是工作,但我并没有得到线索退出,循环应该退出时,最后的日期和今天的日期之间的差异是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);

   }
if(lastDate.Month>DateTime.Today.Month&&lastDate.Year而(lastDate.Year您将始终在列表中添加12个月,因此您可以使用
for
-循环:

for(var i = 0; i < 12; i++)
{
    lastDate = lastDate.AddMonths(1);
    list.Add(lastDate);
}
for(变量i=0;i<12;i++)
{
lastDate=lastDate.AddMonths(1);
列表。添加(最后日期);
}
正如您所知,您必须添加一个月的次数,不需要根据月份和年份设置条件,只需一个计数器即可精确执行此代码12次。

这可能有助于:

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
DateTime lastDate=DateTime.ParseExact(“2012年12月1日”、“年月日”,System.Globalization.CultureInfo.InvariantCulture);
列表结果=新列表();
//迭代,直到差值为两个月
while(新日期时间((DateTime.Today-lastDate.Ticks).Month>=2)
{
结果。添加(最后日期);
lastDate=lastDate.AddMonths(1);
}
//结果:2012年1月12日
//         1/1/2013
//         2/1/2013
//         3/1/2013

希望这能解决您的问题:

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);
}
DateTime lastDate=newdatetime(2012,1,1);
列表=新列表();
while(lastDate<(DateTime.Today.AddMonths(-3))//今天和lastDate之间的差值应为2个月
{
lastDate=lastDate.AddMonths(1);
列表。添加(最后日期);
}

这将从lastDate向您的列表中添加12个日期时间:)


你们能提供一些你们想要的输入和输出吗?我的最后一个日期是1/12/12,所以循环应该从12月开始,迭代到1月、2月、3月等等…我想在列表中添加每个月的第一个。当最后一个日期和当前日期的差为2个月时,我应该退出
list.AddRange(Enumerable.Range(0,12).Select(v => lastDate = lastDate.AddMonths(1)));