比方說,我在C#2周的時間跨度(24小時格式):2周的時間跨度之間的區別,如果第二個是在第二天
TimeSpan start = TimeSpan.Parse("22:11:00");
TimeSpan end = TimeSpan.Parse("01:54:12");
TimeSpan duration = end - start;
的問題是,在這種情況下,持續時間爲負數,遠不是正確的結果。如何獲得正確的持續時間?
比方說,我在C#2周的時間跨度(24小時格式):2周的時間跨度之間的區別,如果第二個是在第二天
TimeSpan start = TimeSpan.Parse("22:11:00");
TimeSpan end = TimeSpan.Parse("01:54:12");
TimeSpan duration = end - start;
的問題是,在這種情況下,持續時間爲負數,遠不是正確的結果。如何獲得正確的持續時間?
看看下面的單元測試
[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);
}
您可以使用Duration() 方法:
TimeSpan duration = (start - end).Duration();
TimeSpan duration = end - start;
不:start - end
。
'if(end
謝謝。有用。 – Caladan
如果開始時間爲09:00,第二天10:00結束,您會發生什麼? – DavidG