1

假设我有一个包含 2012/09/21 23:59:59 的开始对象和一个包含 2012/09/22 00:01:02DateTime的结束对象。DateTime这两个对象之间的差异只有一分钟多一点,但属于这个日期范围的天数等于 2。

我读过其他类似的问题,我认为TimeSpanDateTime不提供执行此类计算的方法。如何计算属于某个日期范围的天数?

4

4 回答 4

4

采用:

DateTime dateTime1 = DateTime.Parse("2012/09/21 23:59:59");
DateTime dateTime2 = DateTime.Parse("2012/09/22 00:01:02");
TimeSpan difference = dateTime1 - dateTime2;

该变量difference包含两个日期之间的时间。例如,使用TotalDays属性来获取天数的差异。

如果要排除时间部分,请使用 DateTime 上的Date属性,例如:

TimeSpan difference = dateTime1.Date - dateTime2.Date;

在这种情况下,TotalDays 将为 1 而不是 0。

于 2012-09-22T11:29:18.247 回答
1

您可以执行以下操作:

System.DateTime dtTodayNoon = new System.DateTime(2006, 9, 13, 12, 0, 0);
System.DateTime dtTodayMidnight = new System.DateTime(2006, 9, 13, 0, 0, 0);
System.TimeSpan diffResult = dtTodayNoon.Subtract(dtYestMidnight);
Console.WriteLine("Yesterday Midnight - Today Noon = " + diffResult.Days);
Console.WriteLine("Yesterday Midnight - Today Noon = " + diffResult.TotalDays);
Console.ReadLine();

如果要包括夏令时:

System.TimeSpan diffResult = dtTodayNoon.ToUniversalTime().Subtract(dtYestMidnight.ToUniversalTime());

如果时区很重要,您也可以使用 DateTimeOffSet

于 2012-09-22T11:30:18.473 回答
0

(dateTime2 - dateTime1).TotalDays

为你工作?

于 2012-09-22T11:29:11.560 回答
0

我读过其他类似的问题,我认为 TimeSpan 和 DateTime 类不提供执行此类计算的方法。

他们当然会这样做。

TimeSpan是要使用的类。我猜您正在寻找TotalDays属性,不是吗?

DateTime date1 = ...;
DateTime date2 = ...;
TimeSpan difference = date2 - date1;
int totalNumberOfDays = difference.TotalDays;
于 2012-09-22T11:29:30.377 回答