Asp.net Obtenir la différence entre 2 mois et date avec une valeur décimale pour la journée gauche

StackOverflow https://stackoverflow.com/questions/4775289

  •  23-10-2019
  •  | 
  •  

Question

Y at-il un moyen d'obtenir la différence entre deux dates par mois. Je voudrais décimal pour la journée.

EX:

First Date : 2010-12-20
Second Date : 2011-12-30

est comme 1 mois et 10 jours entre ces jour.

La différence devrait me donner: 1.33

DateTime dt = new DateTime();
dt = Convert.ToDateTime("2011-12-30"); ;

DateTime dt2 = new DateTime();
dt2 = Convert.ToDateTime("2010-12-20");

int monthDiff = System.Data.Linq.SqlClient.SqlMethods.DateDiffMonth(dt,dt2);
Était-ce utile?

La solution

Vous aurez besoin de travailler le nombre de mois entiers premier. Puis ajouter les jours comme une fraction de jours dans un mois. Si nous travaillons avec 30 jours dans un mois, il pourrait être:

int wholeMonthsDiff = ((date2.Year * 12) + date2.Month) - ((date1.Year * 12) + date1.Month);
if (date2.Day < date1.Day) 
    wholeMonthsDiff--;
var diff = date2 - date1.AddMonths(wholeMonthsDiff);
double monthsDifference = wholeMonthsDiff + (diff.Days / 30d);

Autres conseils

Vous pouvez utiliser DateDiff de VisualBasic-namespace (également lors de l'utilisation C #):

VB.Net

Dim monthsTotal As Double = DateDiff("m", dt, dt2) + _
                             (dt2.Day - dt.Day) / DateDiff("d", dt2, DateAdd("m", 1, dt2))

C #

double monthsTotal = DateAndTime.DateDiff("m", dt, dt2) + (dt2.Day - dt.Day) / DateAndTime.DateDiff("d", dt2, DateAndTime.DateAdd("m", 1, dt2));

BTW, la différence de vos dates d'exemple est de 1 an et 10 jours non 1 mois et 10 jours.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top