如何与日期时间一起创造月份和年份
问题描述:
我想创造的财产以后这样的:如何与日期时间一起创造月份和年份
月,2013
月,2013
2013年3月
日,2013
2013年1月
2012年12月
月,2012
我所写的是这样的:
var currentDate = DateTime.Now;
var list = new List<ArchiveViewModel>();
for (var startDate = new DateTime(2013, 1, 1); startDate.Month <= currentDate.Month; startDate = startDate.AddMonths(1))
{
list.Add(new ArchiveViewModel
{
Month = startDate.Month,
Year = startDate.Year,
FormattedDate = startDate.ToString("MMMM, yyyy")
});
}
和ArchiveViewModel是这样的:
public class ArchiveViewModel
{
public int Month { get; set; }
public int Year { get; set; }
public string FormattedDate { get; set; }
}
但是,它会创建一个特定年份(2012年或2013年)的只有几个月:
January, 2013
February, 2013
March, 2013
April, 2013
May, 2013
,如果我改变起始日期到(2012年, 1,1)它会创建这个:
January, 2012
February, 2012
March, 2012
April, 2012
May, 2012
但我想要的是这样的:
November,2012
December , 2012
January, 2013
February, 2013
March, 2013
April, 2013
May, 2013
答
简单的循环条件从
startDate.Month <= currentDate.Month
更改到
startDate <= currentDate
答
尝试
var currentDate = new DateTime (DateTime.Now.Year, DateTime.Now.Month, 1);
和
for (var startDate = new DateTime(2012, 11, 1); startDate <= currentDate; startDate = startDate.AddMonths(1))
答
你的问题是停车状态中的for循环
startDate.Month <= currentDate.Month;
currentDate
是一个常数,在这种情况下currentDate.Month
总是5.这使得相当于
startDate.Month <= 5;
如果您尝试条件比5月晚(例如7月的开始日期)开始,它不会循环。
我会扩大停止条件以考虑年份。事情是这样的:
startDate.Month <= currentDate.Month || startDate.Year < currentDate.Year;
通过这种方式,它可以循环过去的2012年5月(自今年仍然会更低),但将停止在2013年5