ASP.NET Erhalten Sie den Unterschied zwischen 2 Datum im Monat und dem Dezimalwert für den Tag, der links ist

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

  •  23-10-2019
  •  | 
  •  

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);
War es hilfreich?

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
scroll top