asp.net中的日期范围循环,C#
本文关键字:循环 范围 日期 net asp | 更新日期: 2023-09-27 17:58:59
如何在C#中的两个日期范围之间循环?
例如
我正在创建一个信用卡EMI模块,假设一个用户想要6个EMI我的日期范围为:"08/02/2009-08/08/2009"
我需要循环浏览每个月的
输入:
Start Date- 08/02/2008
End Date - 08/07/2009
Charge Cycle - 6
输出将类似于-
08/02/2008
08/03/2008
08/04/2008
08/05/2008
08/06/2008
08/07/2008
您可以像一样在while循环中使用DateTime.AddMonths
DateTime dtStart = new DateTime(2009,2,8);
DateTime dtEnd = new DateTime(2009,8,8);
while (dtStart < dtEnd)
{
Console.WriteLine(dtStart.ToString("dd/MM/yyyy"));
dtStart = dtStart.AddMonths(1);
}
Ouput将是:
08/02/2009
08/03/2009
08/04/2009
08/05/2009
08/06/2009
08/07/2009
您可以使用Datetime的AddMonths()方法。查看文档
DateTime start = DateTime.Now;
for(int i = 0; i < 6; i++)
{
start = start.AddMonth(i);
Console.WriteLine("{0:dd/MM/yy}", start);
}
或者如果你愿意:
public static IEnumerable<DateTime> GetMonths(DateTime start, int numberOfMonths);
{
for(int i = 0; i < numberOfMonths; i++)
{
start = start.AddMonth(i);
yield return start;
}
}
foreach(var date in GetMonths(DateTime.Now, 6)
{
Console.WriteLine("{0:dd/MM/yy}", date);
}
使用DateTime.AddMonths()
方法。
返回一个新的DateTime,它将指定的月数添加到此实例的值。
喜欢;
DateTime a = new DateTime(2009, 2, 8);
DateTime b = new DateTime(2009, 8, 8);
while ( a < b )
{
Console.WriteLine(a.ToShortDateString());
a = a.AddMonths(1);
}
结果将是;
08.02.2009
08.03.2009
08.04.2009
08.05.2009
08.06.2009
08.07.2009
这是一个DEMO
。
下面将返回指定日期之间的日期列表
var startDate = DateTime.Parse("08/02/2009");
var endDate = DateTime.Parse("08/08/2009");
var resutl = Enumerable.Range(0, 1 + ((endDate.Year - startDate.Year) * 12) + endDate.Month -1 - startDate.Month )
.Select(startDate.AddMonths)
.ToList();