我一直试图写这个循环,它只是变得越来越复杂.基本上我想采取一个给定的日期并循环每个月,直到我达到当月.因此,如果开始日期是11/1/2011,那么我想循环
11/2011,12/2011,1/2012,2/2012等
这是我开始的,但这不起作用.一旦我遇到新的一年,我需要内循环重新开始,而不是startdate.Month.一般来说,循环数月和数年有更好的方法吗?谢谢
for (var y = startdate.Year; y <= DateTime.Now.Year; y++)
{
for (var m = startdate.Month; m <= 12; m++)
{
//do something with m and y
}
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*Axe 29
Date target = new Date(2011, 4, 1);
while (target < Date.Today) {
// do something with target.Month and target.Year
target = target.AddMonths(1);
}
Run Code Online (Sandbox Code Playgroud)
DateTime endDate = DateTime.Today;
for (DateTime dt = startDate; dt <= endDate; dt = dt.AddMonths(1))
{
Console.WriteLine("{0:M/yyyy}", dt);
}
Run Code Online (Sandbox Code Playgroud)
但如果您更喜欢while循环,那么投票给Dan-o.我做到了.:)
Sam 的答案很好,但最终是错误的(如果您的开始日是 20 日,结束日是 10 日,则它不包括上个月)。这是一个有效的版本:
public void GetMonths(DateTime startTime, DateTime endTime)
{
var dateCounter = new DateTime(startTime.Year, startTime.Month, 1);
var endDateTarget = new DateTime(endTime.Year, endTime.Month, 1);
while (dateCounter <= endDateTarget)
{
Console.WriteLine($"The year and month is: {dateCounter.Year}, {dateCounter.Month}");
dateCounter = dateCounter.AddMonths(1);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19736 次 |
| 最近记录: |