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

while (lastDate.Month < DateTime.Today.Month - 1)//
  {
    lastDate= lastDate.AddMonths(1);
    list.Add(lastDate);
  }


当lastDate月是12月并且我在新年的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);

   }


}

请帮我

最佳答案

这可能会有所帮助:

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

08-19 07:27