Asp.net Obtenir la différence entre 2 mois et date avec une valeur décimale pour la journée gauche
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);
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