2012-01-19 20 views
15

:zaman aralığı farkı değeri her zaman pozitif i</p> <p>Kodum burada her zaman pozitif zaman aralığı fark değerini dönüştürmek istediğiniz

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

i lateaftertime her zaman pozitif bir sonuç almak istiyoruz .. bana yardım edin ..

+0

Muhtemel iki kopyası [Negatif zaman açıklığını ele alın] (https://stackoverflow.com/questions/1018643/handle-negative-time-spans) – Michael

cevap

1

Tamam, bu şekilde göründüğünden C# kullandığınızı varsayacağım.

TimeSpan sınıfındaki - işleci aşırı yüklendi, bu nedenle yapmanız gereken tek şey, bir tamsayı üzerinde dönüştürme işlemini gerçekleştirirseniz, yaptığınız hesaplamayı - ile önek olarak yapmaktır. Bir negatif olmayan yayılma almak için lateaftertime.Duration() kullanabilirsiniz

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()); 
40

: Burada bir konsol App çalışabilir bazı kodudur.

+12

Böyle bir şeye gerek yok, sadece "Duration()" değerini kullanın. Mutlak bir "TimeSpan" – V4Vendetta

+0

@ V4Vendetta: Bunu hiç bilmiyordum. Her gün bir şeyler öğren. Bu daha hoş bir yaklaşım. Cevabımı güncelledim. – recursive

+1

Cevabınızı değiştirmek yerine, @ V4Vendetta'ya hak ettiği tanımalarını göndermesini istediniz. Bu tamamen benim kişisel düşüncem ama bence cevabının telafisini almanız haksızlık. – julealgon

2

Sen Math.abs() kullanabilirsiniz:

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

Kullanıcı V4Vendetta olsa bir yorum doğru kararı verdik. TimeSpan.Duration özelliğini kullanın, her zaman mutlak değeri döndürür.