我想得到两个日期的时差。我使用以下代码
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);
这里我得到了消极时间。为什么会发生这种情况。然后我怎样才能得到正面时间
答案 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。
顺便说一句,您不清楚为什么要尝试将starttime
和endtime
解析为DateTime
。由于您与Subtract
一起使用,因此两者似乎都是DateTime
已经。
此外,如果您没有convert
的自定义结构,.NET Framework Convert
class将以大写字母开头。 (因为C#也区分大小写)这就是你需要将其用作Convert.ToDateTime
的原因。
在edit之后,您的代码将不再甚至编译。你需要在字符串中使用双引号。
string starttime = "2015/01/25";
string endtime = "2015/02/25";
在这种情况下,我们看到它们实际上是字符串,而不是DateTime。在计算date1
时,您需要使用date2
和TimeSpan
,而不是那些字符串。所以你真正的代码应该是;
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
天。