2016-12-26 18 views
1

比方說,我在C#2周的時間跨度(24小時格式):2周的時間跨度之間的區別,如果第二個是在第二天

TimeSpan start = TimeSpan.Parse("22:11:00"); 
TimeSpan end = TimeSpan.Parse("01:54:12"); 
TimeSpan duration = end - start; 

的問題是,在這種情況下,持續時間爲負數,遠不是正確的結果。如何獲得正確的持續時間?

+1

'if(end

+0

謝謝。有用。 – Caladan

+0

如果開始時間爲09:00,第二天10:00結束,您會發生什麼? – DavidG

回答

1

看看下面的單元測試

[DataRow("16:00", "01:00", "09:00")] 
[DataRow("16:00", "21:00", "05:00")] 
public void CalculateDuration(string open, string close, string expected) { 
    var begin = TimeSpan.Parse(open); 
    var end = TimeSpan.Parse(close); 

    var actual = end < begin ? (TimeSpan.FromHours(24) - begin) + end : end - begin; 

    Assert.AreEqual(TimeSpan.Parse(expected), actual); 
} 
1

您可以使用Duration() 方法:

TimeSpan duration = (start - end).Duration(); 
0
TimeSpan duration = end - start; 

start - end

相關問題