Mostrando la diferencia entre dos valores de fecha y hora en horas

Estoy recuperando dos valores de fecha y hora de la base de datos. Una vez que se recupera el valor, necesito la diferencia entre los dos valores. Para eso, creo una variable de intervalo de tiempo para almacenar la diferencia de los 2 valores de fecha.

TimeSpan? variable = datevalue1 - datevalue2; 

Ahora necesito mostrar la diferencia que se almacena en la variable Timespan en términos de número de horas. Me referí a TimeSpan.TotalHours pero no pude aplicar el mismo por alguna razón. ¿Cómo puedo hacer eso? Estoy usando C # en un proyecto de MVC. Simplemente necesito mostrar el valor de la diferencia en horas?

EDITAR: Como el intervalo de tiempo fue anulable, no pude usar la propiedad de horas totales. Ahora puedo usarlo haciendo TimeSpanVal.Value.TotalHours ;

Creo que estás confundido porque no has declarado un TimeSpan que has declarado un TimeSpan? que es un TimeSpan anulable . Elimine el signo de interrogación si no necesita que sea anulable o use variable.Value.TotalHours .

es posible que también desee mirar

 var hours = (datevalue1 - datevalue2).TotalHours; 

En la muestra, estamos creando dos objetos de fecha y hora, uno con la hora actual y otro con 75 segundos agregados a la hora actual. Luego llamaremos al método .Subtract () en el segundo objeto DateTime. Esto devolverá un objeto TimeSpan. Una vez que obtenemos el objeto TimeSpan, podemos usar las propiedades de TimeSpan para obtener las horas, los minutos y los segundos reales.

 DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now.AddSeconds( 75 ); 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 ); 

Resultado:

Diferencia de tiempo (segundos): 15 Diferencia de tiempo (minutos): 1 Diferencia de tiempo (horas): 0 Diferencia de tiempo (días): 0

¿Hay alguna razón por la que estás usando Nullable ?

Si desea usar Nullable , puede escribir variable.Value.TotalHours .

O simplemente puede escribir: (datevalue1 - datevalue2).TotalHours .

Aquí hay otro ejemplo de restar dos fechas en C # …

 if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) { ... } 
 var startTime = new TimeSpan(6, 0, 0); // 6:00 AM var endTime = new TimeSpan(5, 30, 0); // 5:30 AM var hours24 = new TimeSpan(24, 0, 0); var difference = endTime.Subtract(startTime); // (-00:30:00) difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00) 

también puede agregar diferencia entre las fechas si comparamos dos fechas diferentes

 new TimeSpan(24 * days, 0, 0) 

una forma más precisa de horas pagadas por los empleados u otro requisito de precisión :

 decimal DeterminePreciseHours(DateTime startTimestamp, DateTime stopTimestamp) { var span = (stopTimestamp - startTimestamp).Value; decimal total = (decimal)span.TotalMilliseconds / 60 / 60 / 1000; return Math.Round(total, PRECISION_CONSTANT); } 

https://dotnetfiddle.net/tVIoVJ