使用以下方法在两个给定日期之间创建日期序列;在两个给定日期之间创建日期序列 - 二月份失败
public List<DateTime> dateSeq(DateTime startDate, DateTime endDate)
{
List<DateTime> allDates = new List<DateTime>();
for (DateTime date = startDate; date <= endDate; date = date.AddMonths(1))
allDates.Add(date);
return allDates;
}
创建日期序列,同时增加1个月,例如当给定的日期是:
startDate: 2017-01-01
endDate: 2017-05-01
序列我得到的是罚款:
2017-01-01
2017-02-01
2017-03-01
2017-04-01
2017-05-01
但是当给定的日期是:
startDate: 2017-01-31
endDate: 2017-05-31
序列我碰到失败传递二月设置在第28天的月份顺序的其余部分时:
2017-01-31
2017-02-28
2017-03-28
2017-04-28
2017-05-28
能有人请解释这是为什么?
一个方法,因为最后一天在非闰年二月份是28加那个月的1个月将是3月28日,依此类推。不知道什么是不明白的。如果你想有这样的功能,可以使用每个月的开始,而不是结束,所以你不必处理每个月和几年不同的天数(闰年/非闰年)( 28,29,30和31)。 – Igor
如果startdate为“2017-02-28”,预期行为如何? – fubo