ASP.NET Erhalten Sie den Unterschied zwischen 2 Datum im Monat und dem Dezimalwert für den Tag, der links ist
Frage
Gibt es eine Möglichkeit, den Unterschied zwischen zwei Daten im Monat zu erhalten? Ich möchte Decimal für den Tag.
EX :
First Date : 2010-12-20
Second Date : 2011-12-30
Dies ist wie 1 Monate und 10 Tage zwischen diesem Datum.
Der Unterschied sollte mir geben: 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);
Lösung
Sie müssen zuerst die Anzahl der ganzen Monate erarbeiten. Fügen Sie dann die Tage als Bruchteil von Tagen im Monat hinzu. Wenn wir mit 30 Tagen im Monat arbeiten, kann es sein:
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);
Andere Tipps
Du könntest benutzen Datiert Aus VisualBasic-namesspace (auch bei Verwendung von 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));
Übrigens beträgt der Unterschied Ihrer Beispieldaten 1 Jahr und 10 Tage nicht 1 Monat und 10 Tage.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow