Esiste un modo migliore per calcolare il numero di anni bisestili tra due anni. Supponendo che io abbia data di inizio e data di fine.Come calcolare il numero di anni bisestili tra due anni in C#
Ho il mio codice, ma penso che ci dovrebbe essere un modo più elegante.
codice chiamando:
var numberOfLeapYears = NumberOfLeapYears(startDate.Year + 1, endDate.Year - 1);
stessa funzione:
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;
}
Quindi, se ho startDate = "2006/10/16" e endDate = "2004/04/18" Dovrei solo avere 1 anno bisestile (2000) nel risultato. Altre parole: l'anno di inizio anno e l'anno di fine anno non dovrebbero essere calcolati, solo tra anni.
Grazie in anticipo per il vostro aiuto.
Questa sembra un'implementazione ragionevole –
Suppongo che intendessi il 16/10/1996. In questo caso, non ti interessa il 29/2/2004, ovvero un giorno bisestile che si è verificato prima della data di fine del 18/04/2004? –
Hai bisogno di prendere in considerazione che i calcoli dell'anno bisestile erano diversi prima della riforma del calendario gregoriano? Inoltre, è necessario tenere conto del fatto che alcuni paesi hanno adottato il calendario riformato in momenti diversi? Il numero di anni bisestili tra due date * in Inghilterra * può essere diverso dal numero di anni bisestili tra due date * negli Stati Uniti *, ad esempio. –