Vla*_*den 13 c# linq datetime date
有没有更好的方法来计算两年之间的闰年数.假设我有开始日期和结束日期.
我有我的代码,但我认为应该有更优雅的方式.
调用代码:
var numberOfLeapYears = NumberOfLeapYears(startDate.Year + 1, endDate.Year - 1);
Run Code Online (Sandbox Code Playgroud)
功能本身:
private static int NumberOfLeapYears(int startYear, int endYear)
{
var counter = 0;
for (var year = startYear; year <= endYear; year++)
counter += DateTime.IsLeapYear(year) ? 1 : 0;
return counter;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我有startDate = "10/16/2006",endDate = "4/18/2004"我的结果应该只有1个闰年(2000).另外一个词startDate的年份和endDate的年份不应该计算,只有几年之间.
在此先感谢您的帮助.
Vic*_*din 27
您可以使用分析方法对其进行计数.一年是闰年,如果可以除以4,但不能除以100,除非它可以除以400.假设您可以通过以下代码计算这样的数字:
static int LeapYearsBetween(int start, int end)
{
System.Diagnostics.Debug.Assert(start < end);
return LeapYearsBefore(end) - LeapYearsBefore(start + 1);
}
static int LeapYearsBefore(int year)
{
System.Diagnostics.Debug.Assert(year > 0);
year--;
return (year / 4) - (year / 100) + (year / 400);
}
Run Code Online (Sandbox Code Playgroud)
某种数学魔术.它比使用LINQ更有效.
Sae*_*iri 11
您可以使用LINQ执行此操作,如下所示:
var leepYears = Enumerable.Range(startYear, endYear - startYear + 1)
.Count(x => DateTime.IsLeapYear(x));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18956 次 |
| 最近记录: |