Расчет количества минут между двумя
У меня есть 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?
Ответы
Ответ 1
Попробуйте это
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 );
Ответ 2
double minutes = varTime.TotalMinutes;
int minutesRounded = (int)Math.Round(varTime.TotalMinutes);
TimeSpan.TotalMinutes: общее количество минут, представленных этим экземпляром.
Ответ 3
В вашем коде quesion вы используете TimeSpan.FromMinutes
неправильно. Пожалуйста, смотрите Документацию MSDN для TimeSpan.FromMinutes, которая дает следующую подпись метода:
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;
Ответ 4
Что случилось с varTime.TotalMinutes
?:)
Ответ 5
Если разница между 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;