viernes, 26 de junio de 2009

El Objeto TimeSpan en C#.net

Un objeto TimeSpan representa un intervalo de tiempo medido como número positivo o negativo de días, horas, minutos, segundos y fracciones de segundo. La unidad de tiempo más grande utilizada para medir la duración es un día. Los intervalos de tiempo se miden en días por cuestión de coherencia, ya que el número de días en unidades de tiempo mayores, como meses y años, varía.
Veamos un pequeño ejemplo en que queremos medir el tiempo que tarda en ejecutarse cierto proceso:
DateTime inicio = DateTime.Now;
// EJECUCIÓN de un proceso
DateTime final = DateTime.Now;
TimeSpan duracion = final - inicio;
double segundosTotales = duracion.TotalSeconds;
int segundos = duracion.Seconds;
Como vemos, se recoge el momento de inicio, se ejecuta el proceso (por ejemplo mil accesos a una base de datos) y se recoge el final. Calculamos la diferencia, que nos da el resultado en TimeSpan, y almacenamos en una variable double el total de segundos transcurridos, y en una variable int los segundos... pero, ¿Cuál es la diferencia?Por ejemplo, si el proceso ha tardado en ejecutarse un minuto y medio, TotalSeconds nos devuelve el total de los segundos, es decir 90, mientras que Seconds nos devuelve los segundos que veríamos, por ejemplo, en un reloj digital, es decir 30.
Esto es muy importante saberlo, y lo mismo sucede con Days - TotalDays, Minutes - TotalMinutes y el resto de unidades de medida... personalmente tuve algunos problemas con esto, pues yo quería averiguar los segundos totales y le pedía duracion.Seconds... y errores como éste son muy difíciles de localizar.
Para finalizar sólo decir que el TimeSpan se puede sumar y restar entre sí muy fácilmente con los típicos operadores '+' y '-' o con sus funciones Add y Substract.

2 comentarios:

acuario dijo...

El timeSpan es lo mismo que el Datetime?

Men dijo...

No tío, el timespan solo calcula intervalos de tiempo, checa el codigo, en cambio el Datetime muestra valores sobre fecha y horas en diversos formatos.