Tengo una vista de cuadrícula de datos en mi aplicación que contiene las horas de inicio y finalización. Quiero calcular la cantidad de minutos entre estos dos tiempos. Hasta ahora tengo:
var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = TimeSpan.FromMinutes(varTime);
Pero la última línea no se compilará porque dice que estoy usando argumentos no válidos para el constructor Timespan. He investigado bastante sobre cómo calcular la cantidad de minutos entre dos tiempos, pero me estoy golpeando un poco con una pared de ladrillos. ¿Puede alguien aconsejarme sobre la mejor manera de lograr mi objetivo?
EDITAR/
Ahora mi código es el siguiente:
var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = (int)varTime.TotalMinutes;
Pero obtengo un yeso inválido en la segunda línea. Tanto varFinish como varValue son tiempos, por ejemplo, 10:00 y 8:00 dicen. Entonces, ¿no estás seguro de por qué no emiten para escribir DateTime?
Respuestas:
Prueba esto
DateTime startTime = varValue DateTime endTime = varTime TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );
Editar: Si está probando 'span.Minutes', esto devolverá solo los minutos del intervalo de tiempo [0 ~ 59], para devolver la suma de todos los minutos de este intervalo, simplemente use 'span.TotalMinutes'.
fuente
TotalMinutes()
?span.Minutes
devuelve un número [0..59]. Úselo en suspan.TotalMinutes
lugardouble minutes = varTime.TotalMinutes; int minutesRounded = (int)Math.Round(varTime.TotalMinutes);
TimeSpan.TotalMinutes : el número total de minutos representados por esta instancia.
fuente
En su código de búsqueda está utilizando
TimeSpan.FromMinutes
incorrectamente. Consulte la documentación de MSDN para TimeSpan.FromMinutes, que proporciona la siguiente firma del método:public static TimeSpan FromMinutes(double value)
por lo tanto, el siguiente código no se compilará
var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile
En su lugar, puede utilizar la propiedad TimeSpan.TotalMinutes para realizar esta aritmética. Por ejemplo:
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; double fractionalMinutes = varTime.TotalMinutes; int wholeMinutes = (int)fractionalMinutes;
fuente
Solo necesita consultar la
TotalMinutes
propiedad de esta maneravarTime.TotalMinutes
fuente
Si la diferencia entre endTime y startTime es mayor o igual a 60 minutos , la declaración:
endTime.Subtract(startTime).Minutes;
siempre regresará(minutesDifference % 60)
. Obviamente lo cual no es deseable cuando solo hablamos de minutos (no de horas aquí).Estas son algunas de las formas si desea obtener
total number of minutes
(en diferentes tipos):// 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;
fuente