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

Resuelto reggie asked hace 13 años • 8 respuestas

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 ;

reggie avatar Feb 09 '11 21:02 reggie
Aceptado

es posible que también quieras mirar

var hours = (datevalue1 - datevalue2).TotalHours;
MarkKGreenway avatar Feb 09 '2011 14:02 MarkKGreenway

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

Hans Olsson avatar Feb 09 '2011 14:02 Hans Olsson

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
safi avatar Feb 09 '2011 14:02 safi

¿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.

escargot agile avatar Feb 09 '2011 14:02 escargot agile