计算两次之间有多less分钟

我有一个datagridview在我的应用程序,其中包含开始和结束时间。 我想计算这两次之间的分钟数。 到目前为止我已经得到:

var varFinish = tsTable.Rows[intCellRow]["Finish Time"]; TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; int intMinutes = TimeSpan.FromMinutes(varTime); 

但最后一行不会编译,因为它说我使用Timespan构造函数的无效参数。 我已经研究了很多关于如何计算两次之间的分钟数的问题,但是我碰到了一些砖墙。 有人可以请教我最好的方式来实现我的目标。

编辑/

现在我的代码如下:

 var varFinish = tsTable.Rows[intCellRow]["Finish Time"]; TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; int intMinutes = (int)varTime.TotalMinutes; 

但是我在第二行中得到了一个无效的投票。 varFinish和varValue都是时间,例如10:00和8:00。 所以不知道为什么他们不会投入键入DateTime?

尝试这个

 DateTime startTime = varValue DateTime endTime = varTime TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (seconds): " + span.Seconds ); Console.WriteLine( "Time Difference (minutes): " + span.Minutes ); Console.WriteLine( "Time Difference (hours): " + span.Hours ); Console.WriteLine( "Time Difference (days): " + span.Days ); 
 double minutes = varTime.TotalMinutes; int minutesRounded = (int)Math.Round(varTime.TotalMinutes); 

TimeSpan.TotalMinutes :此实例表示的总分钟数。

在您的quesion代码中,您正在使用TimeSpan.FromMinutes不正确。 请参阅TimeSpan.FromMinutes的MSDN文档 ,其中提供了以下方法签名:

 public static TimeSpan FromMinutes(double value) 

因此,下面的代码将不能编译

 var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile 

相反,您可以使用TimeSpan.TotalMinutes属性来执行此算术。 例如:

 TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; double fractionalMinutes = TimeSpan.TotalMinutes; int wholeMinutes = (int)fractionalMinutes; 

varTime.TotalMinutes什么问题? 🙂

如果endTime和startTime之间的差值大于或等于60分钟 ,则声明: endTime.Subtract(startTime).Minutes; 将始终返回(minutesDifference % 60) 。 当我们只谈论几分钟(而不是几个小时)时,显然这是不期望的。
如果您想获得total number of minutes (在不同的types转换中),请使用以下几种方法:

 // Default value that is returned is of type *double* double double_minutes = endTime.Subtract(startTime).TotalMinutes; int integer_minutes = (int)endTime.Subtract(startTime).TotalMinutes; long long_minutes = (long)endTime.Subtract(startTime).TotalMinutes; string string_minutes = (string)endTime.Subtract(startTime).TotalMinutes;