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




3 Answers

試試這個

DateTime startTime = varValue
DateTime endTime = varTime

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

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



Related


Tags

c#