计算两次之间有多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;