2017-07-18 117 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

这不仅仅是优雅。这是测量流逝时间的唯一正确方法。 –