C# 计算两次之间有多少分钟

C# 计算两次之间有多少分钟,c#,C#,我的应用程序中有一个datagridview,它保存开始和完成时间。我想计算这两次之间的分钟数。到目前为止,我得到了: var varFinish = tsTable.Rows[intCellRow]["Finish Time"]; TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; int intMinutes = TimeSpan.FromMinutes(varTime); 但是最后一行不会编译,因为它说我正在为Time

我的应用程序中有一个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?

在您的问题代码中,您使用的
TimeSpan.FromMinutes
不正确。请参阅TimeSpan.FromMinutes的,它提供了以下方法签名:

public static TimeSpan FromMinutes(double value)
因此,以下代码不会编译

var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile
相反,您可以使用该属性执行此算法。例如:

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

:此实例所代表的总分钟数。

您只需像这样查询
varTime.TotalMinutes
属性即可

DateTime startTime = varValue
DateTime endTime = varTime

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );
编辑:
如果您正在尝试“span.Minutes”,它将只返回timespan[0~59]的分钟数,要返回此间隔中所有分钟数的总和,只需使用“span.TotalMinutes”。

如果endTime和startTime之间的差值大于或等于60分钟,则语句:
endTime.Subtract(startTime).Minutes将始终返回
(分钟差%60)
。显然,当我们只谈论分钟(这里不是小时)时,这是不可取的
如果您想获得
总分钟数
(在不同类型的广播中),以下是一些方法:


是的,我一直在找。非常感谢^ ^ int minutesRounded=(int)Math.Round(minutes);这是一个很好的答案,但当两个时间之间的差值大于1小时(即60分钟或更长)时,在span.Minutes上给出0@MalikAsif。我只是在61分钟的时间里试了一下,我得到了1小时1分钟,正如预期的那样。如果跨度正好是60分钟,那么是的,分钟将是零。你想的是
TotalMinutes()
?不是真的
span.Minutes
返回一个数字[0..59]。使用
span.TotalMinutes
代替此答案不应被接受。根据其他评论,它不能正确地解决问题。@tjmoore感谢您的反馈,我同意您的意见。我在2012年1月回答了最初的问题,之后问题被编辑。我偶尔会对这个答案投反对票,可能是因为大多数人在最初未经编辑的问题被问到5年后才阅读答案。如果varFinish是一个字符串,则不能将字符串转换为DateTime。您需要使用DateTime.Parse(…)。即使如此,如果varFinish中没有日期,它也将暗示今天的日期。
DateTime startTime = varValue
DateTime endTime = varTime

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );
// 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;