计算两个日期之间的差异返回一个负数

Aom*_*Set 2 c# datetime

我想计算不同日期之间有多少天.就像话题所说的那样,我得到的是负值.我想我可以采取绝对值,但它返回负值的事实让我怀疑计算是否正确.以下是我的代码:

DateTime previousDay = new DateTime(1998, 6, 31, new GregorianCalender());
DateTime nextDay = new DateTime(1998, 6, 3, new GregorianCalender());

TimeSpan differenceInDays = (nextDay - previousDay); 
double xAxisValue = differenceInDays.TotalDays;
Run Code Online (Sandbox Code Playgroud)

当然,3-31给出-28,但由于我们希望它显示两者之间的间隔,因此它没有返回正值是没有意义的.难道我做错了什么?

我也试过这种方法:

(a - b).TotalDays
Run Code Online (Sandbox Code Playgroud)

其中a和b的类型为Datime

Jon*_*eet 12

我想我可以采取绝对值,但它返回负值的事实让我怀疑计算是否正确.

为什么?nextDay早于previousDay,所以当然减去previousDay会产生负面结果.

你有效地问"我需要多少天previousDay才能到达nextDay?答案是-28.

什么关心我是这里的名字-我期望一个nextDay值总是晚于previousDay价值-所以要么你发现这些值的方式不正确,或者您需要更改名称,使意思更加清晰.据推测,就同一背景而言,它们不是"下一个"和"前一个".


Mac*_*zko 6

这是预期的行为.

您应该使用TimeSpan.Duration()方法.

它返回一个新的TimeSpan对象,其值是当前TimeSpan对象的绝对值.

http://msdn.microsoft.com/en-us/library/system.timespan.duration.aspx


Ami*_*arz 5

我认为这是因为日历中没有“1998-06-31”日期。