时间差值始终为正

Rom*_*ndo 26 c# timespan

我想将timepan diff值转换为正值

我的代码在这里:

TimeSpan lateaftertime = new TimeSpan();
lateaftertime = lateafter - Convert.ToDateTime(intime);
Run Code Online (Sandbox Code Playgroud)

我希望得到的结果总是积极的..请帮帮我..

rec*_*ive 64

您可以使用lateaftertime.Duration()获得非负跨度.

  • 不需要这样的东西,只需使用`Duration()`来提供绝对的'TimeSpan` (21认同)
  • V4Vendetta一直可以自由发表自己的答案.如果他发布了它,我就不会改变我的答案. (4认同)
  • 你应该要求@ V4Vendetta发布他的并获得应得的认可,而不是改变你的答案.这完全是我个人的意见,但我认为你得到他的答案的赞成是不公平的. (3认同)

Han*_*ant 6

您可以使用 Math.Abs​​():

        lateaftertime = new TimeSpan(Math.Abs(lateaftertime.Ticks));
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*haw 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());
Run Code Online (Sandbox Code Playgroud)