TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
有时会返回负值。如何将价值转化为永远积极的?TimeSpan从负值到负值的差异
TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
有时会返回负值。如何将价值转化为永远积极的?TimeSpan从负值到负值的差异
你可以使用Negate()
改变负值转正
从MSDN
如果当前实例的日期和时间比价值较早, 该方法返回一个表示时间间隔对象负时间 范围。也就是说,所有非零属性的值(例如 Days或Ticks)都是负值。
所以,你可以调用取决于求反方法在其值越大,并取得了积极的Timespan
说我们有startDate
和endDate
(结束日期比的startDate以上),所以当我们做 startDate.Subtract(endDate)
我们会得到一个负的TimeSpan
。所以根据这个检查你可以转换负值。所以,如果你outtime是超前的earlybefore它会给你一个负时间跨度
编辑
请检查TimeSpan
这应该给你绝对值总是
Earlybeforetime.Duration()
我无法理解请解释我或在这里给出一些示例代码 –
有时我得到正值也假设我将使用Negate()意味着正值变为负值。需要我。我只是希望所有的回报值都是正面的。 –
@ user1065029扩大了一点,希望这可以帮助你 – V4Vendetta
Duration()
当你的早期时间早于时,返回负值。 如果你想有两个时间点之间的绝对的“距离”,你可以使用TimeSpan.Duration方法,e.g:
TimeSpan first = TimeSpan.FromDays(5);
TimeSpan second = TimeSpan.FromDays(15);
TimeSpan final = first.Subtract(second).Duration();
Console.WriteLine(final);
此方法将返回绝对时间跨度值。
谢谢朋友..我得到了结果.. –
var startTime = new TimeSpan(6, 0, 0); // 6:00 AM
var endTime = new TimeSpan(5, 30, 0); // 5:30 AM
var hours24 = new TimeSpan(24, 0, 0);
var difference = endTime.Subtract(startTime); // (-00:30:00)
difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00)
还可以添加日期之间的区别,如果我们比较两个不同的日期时间的24小时内new TimeSpan(24 * days, 0, 0)
可能重复http://stackoverflow.com/questions/8922435/timespan-difference-value-always-positive) – V4Vendetta