2017-07-18 136 views
1

我有下面的代碼:C# - 計算分鐘的時間差

DateTime start = DateTime.Now; 
Thread.Sleep(60000); 
DateTime end = DateTime.Now; 

,我想計算起點和終點之間的分鐘差。我該怎麼做?對於上面的例子,結果應該是'1'。

在此先感謝!

+0

結果不保證是1.它可能是1,它可能會更大。 '睡眠'只保證'n'毫秒內不會做任何工作,而不會在'n'毫秒內恢復工作。如果您的結果有時不正確,請不要感到驚訝。 –

+0

您應該*不*使用'DateTime.Now'來衡量代碼的性能。使用'System.Diagnostics.Stopwatch'。請閱讀[.NET開發人員的五種常見夏令時反模式](http://codeofmatt.com/2015/03/06/common-daylight-saving-time-mistakes-for-net-developers/) –

回答

5

您可以使用Subtract方法並使用TotalMinutes

var result = end.Subtract(start).TotalMinutes; 

如果你需要它沒有小數分鐘只投它作爲一個int

var result = (int)end.Subtract(start).TotalMinutes; 

看一看在MSDN瞭解更多信息:SubstractTotalMinutes

+0

謝謝,這就是比我預期的更容易! –

+0

我想問一下,在這個例子中var和int有什麼區別? –

+1

@斯科特謝謝;) –

1

使用TimeSpan

它代表一個時間間隔,並會給你你正在尋找的差異。

下面是一個例子。

TimeSpan span = end.Subtract (start); 

Console.WriteLine("Time Difference (minutes): " + span.Minutes); 
2

簡單地走差異化(也許圓,如果你想):

double preciseDifference = (end - start).TotalMinutes; 
int differentMinutes = (int)preciseDifference; 
2

我想這樣做的更優雅的方式是通過使用秒錶級

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
Thread.Sleep(10000); 
stopWatch.Stop(); 
// Get the elapsed time as a TimeSpan value. 
TimeSpan ts = stopWatch.Elapsed; 
+0

這不僅僅是優雅。這是測量流逝時間的唯一正確方法。 –