1

有没有办法获得月份中两个日期之间的差异。我想要当天的小数。

前任 :

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

这就像这些日期之间的 1 个月零 10 天。

差异应该给我: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);
4

2 回答 2

1

您需要先计算整月数。然后将天数添加为一个月中天数的一小部分。如果我们一个月工作 30 天,可能是:

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);
于 2011-01-23T18:00:08.143 回答
1

您可以使用VisualBasic-Namespace 中的DateDiff(也可以在使用 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));

顺便说一句,您的示例日期的差异是 1 年 10 天而不是 1 个月和 10 天。

于 2011-01-23T18:16:57.430 回答