为什么当一个日期使用时间跨度从另一个日期中减去时,我们会得到否定值



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

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);
在这里我得到负时间.

为什么会发生.那么我怎么能得到一个正时间

如果

endtime于(小于)starttime,这就是你得到的:

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

因为。。。数学。

显然,您的endtime小于starttime。这就是你得到负值的原因。 TimeSpan有一个方法 as Duration 返回当前对象的绝对值。

顺便说一句,目前尚不清楚您为什么尝试解析您的starttimeendtimeDateTime.由于您与他们一起使用Subtract,因此两者都似乎已经DateTime了。

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

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

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

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

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 天。

相关内容

  • 没有找到相关文章

最新更新