Czy istnieje lepszy sposób obliczania liczby lat przestępnych między dwoma latami. Zakładając, że mam datę rozpoczęcia i zakończenia.Jak obliczyć liczbę lat przestępnych między dwoma latami w C#
Mam mój kod, ale myślę, że powinien być bardziej elegancki sposób.
wywołanie kodu:
var numberOfLeapYears = NumberOfLeapYears(startDate.Year + 1, endDate.Year - 1);
funkcja sama:
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;
}
Więc jeśli mam startDate = "16.10.2006" i endDate = "18.04.2004" powinienem tylko 1 rok przestępny (2000). Innymi słowy, rok startDate i rok zakończenia nie powinny być obliczane, tylko lata pomiędzy.
Z góry dziękuję za pomoc.
Wydaje się, że to rozsądna implementacja. –
Zakładam, że chodziło Ci o 10/16/1996. W tym przypadku nie obchodzi cię data 2/24/2004, który był dniem przestępnym, który miał miejsce przed datą końcową 4/18/2004? –
Czy trzeba wziąć pod uwagę, że obliczenia roku przestępnego były inne przed reformą kalendarza gregoriańskiego? Ponadto, czy trzeba wziąć pod uwagę, że niektóre kraje przyjęły zreformowany kalendarz w różnym czasie? Liczba lat przestępnych między dwiema datami * w Anglii * może być inna niż liczba lat przestępnych między dwiema datami * w USA * na przykład. –