从负值到正转换的时间跨度差异
本文关键字:时间跨度 转换 | 更新日期: 2023-09-27 18:20:50
TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
有时它会返回负值。如何将值转换为始终为正?
您可以使用
Negate()
将负值更改为正
来自 MSDN
如果当前实例的日期和时间早于值, 该方法返回一个表示负时间的 TimeSpan 对象 跨度。也就是说,其所有非零属性的值(例如 天数或刻度(为负数。
因此,您可以根据哪个值更大来调用 Negate 方法并获得正Timespan
假设我们有startDate
和endDate
(endDate 大于 startDate(,所以当我们这样做时 startDate.Subtract(endDate)
我们会得到一个负面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);
此方法将返回绝对时间跨度值。
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)
,也可以增加日期之间的差异
posativeSpan = new TimeSpan(negativeSpan.Ticks * -1(;