TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
Run Code Online (Sandbox Code Playgroud)
有时它会返回负值.如何将值转换为始终为正?
V4V*_*tta 21
您可以使用Negate()将负值更改为正值
来自MSDN
如果当前实例的日期和时间早于value,则该方法返回表示负时间跨度的TimeSpan对象.也就是说,其所有非零属性(例如Days或Ticks)的值都是负数.
因此,您可以根据哪个值更大来调用Negate方法并获得正数 Timespan
假设我们有startDate和endDate(结束日期比的startDate更大),因此,当我们这样做
startDate.Subtract(endDate),我们会得到一个负TimeSpan.因此,基于此检查,您可以转换负值.因此,如果你的早期时间提前,它会给你一个负面的TimeSpan
编辑
请检查Duration()的TimeSpan这应该给你总是绝对值
Earlybeforetime.Duration()
当您的Earlybeforetime 早于该停机时间时,将返回负值.如果你想在两个时间点之间有绝对的"距离",你可以使用TimeSpan.Duration方法,例如:
TimeSpan first = TimeSpan.FromDays(5);
TimeSpan second = TimeSpan.FromDays(15);
TimeSpan final = first.Subtract(second).Duration();
Console.WriteLine(final);
Run Code Online (Sandbox Code Playgroud)
此方法将返回绝对TimeSpan值.