c# - fechas - sacar diferencia entre dos horas sql
Mostrando la diferencia entre dos valores de fecha y hora en horas (7)
¿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
.
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 ;
Aquí hay otro ejemplo de restar dos fechas en C # ...
if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 )
{
...
}
Creo que estás confundido porque no has declarado un TimeSpan
que has declarado un TimeSpan?
que es un TimeSpan
nullable . Elimine el signo de interrogación si no necesita que sea anulable o use variable.Value.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
es posible que también desee mirar
var hours = (datevalue1 - datevalue2).TotalHours;
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);
}
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)