当一个日期使用时间间隔减去另一个日期时,为什么我们会得到一个negetive值

时间:2015-06-11 07:00:15

标签: c# asp.net datetime time

我想得到两个日期的时差。我使用以下代码

string starttime='2015/01/25';
string endtime='2015/02/25';


DateTime date1=convert.ToDateTime(starttime);
DateTime date2=convert.ToDateTime(endtime);
TimeSpan timediff= endtime.Subtract(starttime);

这里我得到了消极时间。为什么会发生这种情况。然后我怎样才能得到正面时间

2 个答案:

答案 0 :(得分:4)

如果endtime 早于 而不是{小于] starttime,那么这就是你得到的:

DateTime starttime = new DateTime(2005, 5, 8);
DateTime endtime = new DateTime(2005, 5, 7);
TimeSpan timediff = endtime.Subtract(starttime); // minus one day

因为...数学。

答案 1 :(得分:2)

显然,您的endtime小于starttime。这就是你获得负面价值的原因。 TimeSpan的方法为Duration,返回当前对象的absolute value

顺便说一句,您不清楚为什么要尝试将starttimeendtime解析为DateTime。由于您与Subtract一起使用,因此两者似乎都是DateTime 已经

此外,如果您没有convert的自定义结构,.NET Framework Convert class将以大写字母开头。 (因为C#也区分大小写)这就是你需要将其用作Convert.ToDateTime的原因。

edit之后,您的代码将不再甚至编译。你需要在字符串中使用双引号。

string starttime = "2015/01/25";
string endtime = "2015/02/25";

在这种情况下,我们看到它们实际上是字符串,而不是DateTime。在计算date1时,您需要使用date2TimeSpan,而不是那些字符串。所以你真正的代码应该是;

string starttime = "2015/01/25";
string endtime = "2015/02/25";

DateTime date1 = Convert.ToDateTime(starttime);
DateTime date2 = Convert.ToDateTime(endtime);
TimeSpan timediff = date1.Subtract(date2);

返回-31.00:00:00,因为这些日期之间有31天。