时间跨度差异值始终为正[重复]

问题描述 投票:0回答:3

我想将时间跨度差异值转换为始终为正。

我的代码在这里:

TimeSpan lateaftertime = new TimeSpan();
lateaftertime = lateafter - Convert.ToDateTime(intime);

我希望得到

lateaftertime
始终为正的结果。

c# timespan
3个回答
103
投票

您可以使用

lateaftertime.Duration()
来获得非负跨度。


6
投票

你可以使用 Math.Abs():

        lateaftertime = new TimeSpan(Math.Abs(lateaftertime.Ticks));

用户 V4Vendetta 在评论中做出了正确的决定。 使用 TimeSpan.Duration 属性,它始终返回绝对值。


2
投票

好吧,我假设您使用的是 C#,因为它看起来就是这样。

-
类上的
TimeSpan
运算符已重载,因此您需要做的就是在计算前加上
-
,就像对整数执行转换一样。以下是一些可以在控制台应用程序中运行的代码:

var inTime = "19-Jan-2012 21:00";
var lateAfter = Convert.ToDateTime("19-Jan-2012 20:00");
TimeSpan lateAfterTime = lateAfter - Convert.ToDateTime(inTime);

var positiveLateAfterTime =
    lateAfterTime < TimeSpan.Zero
    ?
    -lateAfterTime
    :
    lateAfterTime;

Console.WriteLine(positiveLateAfterTime.ToString());
© www.soinside.com 2019 - 2024. All rights reserved.