我想从今天的日期开始寻找下一个闰年.
例如,
Date NextLeapDate
----- ------------
2016-01-01 2016-02-29
2016-05-24 2020-02-29
2017-02-03 2020-02-29
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止获得下一个闰年的原因,但它让我错了价值,
public int GetNextLeapYear(int year)
{
bool isLeapYear = false;
while (true)
{
if (DateTime.IsLeapYear(year))
{
isLeapYear = true;
}
else
{
year = year + 1;
GetNextLeapYear(year);
}
break;
}
return year;
}
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
DateTime GetNextLeapDate (DateTime baseDate)
{
int year = baseDate.Year;
// start in the next year if we’re already in March
if (baseDate.Month > 2)
year++;
// find next leap year
while (!DateTime.IsLeapYear(year))
year++;
// get last of February
return new DateTime(year, 2, 29);
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果(并且仅当)基准日期已经超过3月(即可能的闰日已经结束),我们需要跳过检查当前年份.这样,我们就不会得到2016年2月29日的结果,例如今天(这篇文章的时间).
像这样使用它返回所需的日期:
Console.WriteLine(GetNextLeapDate(new DateTime(2016, 01, 01))); // 2016-02-29
Console.WriteLine(GetNextLeapDate(new DateTime(2016, 05, 24))); // 2020-02-29
Console.WriteLine(GetNextLeapDate(new DateTime(2017, 02, 03))); // 2020-02-29
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |