Una instancia de la estructura TimeSpan representa un periodo de tiempo pero también nos brinda una serie de propiedades y métodos útiles.
Para crear una instancia de TimeSpan tenemos varios constructores, por lo que deberemos buscar el más adecuado a nuestra necesidad.... podemos crear un TimeSpan a partir de
ticks, o usando el constructor que más parámetros acepta, podemos crearlo a partir de un número de días, horas, minutos, segundos y milisegundos.
Otra forma de inicializar un TimeSpan es a partir se alguno de sus métodos estáticos cuyo nombre comienza con From, (
Desde o
A partir de en inglés), entonces podríamos inicializar untimeSpan a partir de un número de minutos usando
TimeSpan.FromMinutes(double)
.
También podemos sumar y restar instancias de TimeSpan, pero como cada instancia es inmutable, el resultado de la operación lo asignaremos a otra variable.
Para realizar estas operaciones recurriremos al los métodos de instancia Add y Subtract los cuales aceptan un único parámetro de tipo TimeSpan, vamos un ejemplo de cada operación:
TimeSpan periodo1 = TimeSpan.FromHours(1);
TimeSpan periodo2 = TimeSpan.FromHours(3);
TimeSpan suma = periodo1.Add(periodo2); // suma representa un TimeSpan de 4 horas: 1 + 3
TimeSpan resta = periodo2.Subtract(periodo1); // resta representa un TimeSpan de 2 horas, 3 - 1
Algunas propiedades de TimeSpan son tan importantes como útiles a la hora de trabajar con intervalos de tiempo, me refiero a las propiedades que nos devuelven el valor de ese intervalo en cierta unidad, por ejemplo la cantidad de segundos totales correspondientes a ese periodo.
Estas propiedades son nombradas como
TotalUnidadDeTiempo, por ejemplo TotalSeconds o TotalMinutes, veamos un ejemplo:
TimeSpan foo = TimeStamp.FromMinutes(2);
Console.WriteLine(foo.TotalSeconds.ToString()); // Se imprimirá 120
No debemos confundir estas propiedades con las que sólo reciben el nombre de la unidad de tiempo a la que representan, por ejemplo Hours o MilliSeconds, ya que éstas representan el valor de esa unidad, no la representación total del periodo en esa unidad.
Por ejemplo:
TimeSpan foo = TimeStamp.FromSeconds(70);
Console.WriteLine(foo.TotalSeconds.ToString()); // Se imprimirá 70
Console.WriteLine(foo.Seconds.ToString()); // Se imprimirá 10, ya que el TimeSpan representa un periodo de 1 minuto y 10 segundos