c# - 計算兩次之間的分鐘數




(4)

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

https://code.i-harness.com


在您的問題代碼中,您正在使用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 = varTime.TotalMinutes;
int wholeMinutes = (int)fractionalMinutes;

如果endTime和startTime之間的差異大於或等於60分鐘 ,則語句為: endTime.Subtract(startTime).Minutes; 將始終返回(minutesDifference % 60) 。 顯然,當我們只討論分鐘(這裡不是幾小時)時,這是不希望的。
如果您想獲得total number of minutes (在不同的類型轉換中),以下是一些方法:

// 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; 

試試這個

DateTime startTime = varValue
DateTime endTime = varTime

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );

double minutes = varTime.TotalMinutes;
int minutesRounded = (int)Math.Round(varTime.TotalMinutes);

TimeSpan.TotalMinutes :此實例表示的總分鐘數。






c#  

c#