99 votes

Différence de date en années avec C#

Comment puis-je calculer la différence de date entre deux dates en années ?

Par exemple : (Datetime.Now.Today() - 11/03/2007) en années.

136voto

Richard J. Ross III Points 33152

J'ai écrit une implémentation qui fonctionne correctement avec des dates à exactement un an d'intervalle.

Cependant, il ne traite pas gracieusement les intervalles de temps négatifs, contrairement à l'autre algorithme. Il n'utilise pas non plus sa propre date arithmétique, au lieu de compter sur la bibliothèque standard pour cela.

Donc sans plus tarder, voici le code :

DateTime zeroTime = new DateTime(1, 1, 1);

DateTime a = new DateTime(2007, 1, 1);
DateTime b = new DateTime(2008, 1, 1);

TimeSpan span = b - a;
// Because we start at year 1 for the Gregorian
// calendar, we must subtract a year here.
int years = (zeroTime + span).Year - 1;

// 1, where my other algorithm resulted in 0.
Console.WriteLine("Yrs elapsed: " + years);

60voto

dana Points 4890

Utilisation :

int Years(DateTime start, DateTime end)
{
    return (end.Year - start.Year - 1) +
        (((end.Month > start.Month) ||
        ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0);
}

28voto

Ruchir Points 61

Nous avons dû coder un chèque pour établir si la différence entre deux dates, une date de début et une date de fin était supérieure à 2 ans.

Grâce aux conseils ci-dessus, il a été fait comme suit :

 DateTime StartDate = Convert.ToDateTime("01/01/2012");
 DateTime EndDate = Convert.ToDateTime("01/01/2014");
 DateTime TwoYears = StartDate.AddYears(2);

 if EndDate > TwoYears .....

11voto

Albin Sunnanbo Points 30722
var totalYears = 
    (DateTime.Today - new DateTime(2007, 03, 11)).TotalDays
    / 365.2425;

Jours moyens au départ de Wikipedia/Leap_year.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X