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 lo mismo por algún motivo. ¿Cómo puedo hacer eso? Estoy usando C# en un proyecto MVC. ¿Simplemente necesito mostrar el valor de diferencia en horas?
EDITAR: Dado que el intervalo de tiempo era anulable, no pude usar la propiedad de horas totales. Ahora puedo usarlo haciendo TimeSpanVal.Value.TotalHours ;
es posible que también quieras mirar
var hours = (datevalue1 - datevalue2).TotalHours;
Creo que estás confundido porque no has declarado un TimeSpan
que TimeSpan?
sea anulable TimeSpan
. Elimine el signo de interrogación si no necesita que admita valores NULL o utilice variable.Value.TotalHours
.
En el ejemplo, 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, minutos y 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:
Time Difference (seconds): 15
Time Difference (minutes): 1
Time Difference (hours): 0
Time Difference (days): 0
¿Hay alguna razón por la que estás usando Nullable
?
Si quieres usarlo Nullable
, puedes escribir variable.Value.TotalHours
.
O simplemente puedes escribir: (datevalue1 - datevalue2).TotalHours
.