Подтвердить что ты не робот

Расчет количества минут между двумя

У меня есть 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?

4b9b3361

Ответ 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;