web-dev-qa-db-ja.com

タイムスパン差の値は常に正

タイムスパン差分値を常に正に変換したい

私のコードはここにあります:

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

いつもポジティブなレイトアフタータイムの結果を得たいです。助けてください。

27

lateaftertime.Duration()を使用して、負でないスパンを取得できます。

60
recursive

Math.Abs​​()を使用できます:

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

しかし、ユーザーV4Vendettaはコメントで正しい電話をかけました。 TimeSpan.Durationプロパティを使用すると、常に絶対値が返されます。

4
Hans Passant

OK、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());
2
DaveShaw