Pregunta

Quiero calcular el intervalo de tiempo entre 2 veces que guardé en una base de datos. Así que, literalmente, quiero saber la cantidad de tiempo entre los 2 valores.

14:10:20 - 10:05:15 = 02:05:05

El resultado sería 02:05:05.

¿Cómo podría lograr esto usando C #?

14:10:20 es el formato en el que lo guardé en mi base de datos.

¿Fue útil?

Solución

Lea los dos valores de tiempo en las variables de TimeSpan, luego realice un .Subtract () en la variable más grande de TimeSpan para obtener el resultado de TimeSpan.

Por ejemplo, diferencia TimeSpan = t1.Subtract (t2); .

Otros consejos

El primer paso será obtener los valores de tiempo almacenados en su base de datos en las estructuras .NET DateTime .

Si los almacenó como valores de SQL DateTime en la base de datos, puede obtenerlos directamente como DateTime . Se vería algo como esto:

SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection);
SQLDataReader myReader = getTimeCommand.ExecuteReader();
while (myReader.Read())
{
    DateTime time = myReader.GetDateTime(0);
}
myReader.Close();

Su implementación puede diferir, consulte la documentación de ADO.NET en la biblioteca de MSDN.

Si ya tienes una cadena que representa la hora en la que puedes analizarla en un DateTime utilizando los métodos estáticos

DateTime.Parse 

o

DateTime.ParseExact

En su caso, es posible que necesite usar ParseExact , que puede proporcionarse con una cadena de formato que define cómo leer la cadena. Los ejemplos se pueden encontrar en la biblioteca de MSDN.

Las duraciones en .NET se almacenan dentro de una estructura TimeSpan . Obtener el tiempo transcurrido entre las fechas y las fechas es fácil:

DateTime time1, time2; //filled with your timevalues from the db
TimeSpan elapsed = d2 - d1;

transcurrido ahora contiene el intervalo de tiempo entre los dos DateTimes . Hay varios miembros para que la estructura acceda al TimeSpan . Busque en la biblioteca de MSDN para encontrar las que necesita.

Los objetos DateTime son compatibles con " - " operador para que pueda leer sus tiempos en tales objetos y restarlos. Para probar, mira esto:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top