TimeSpan y duraciones
Mida intervalos de tiempo
TimeSpan y duraciones es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
Qué es TimeSpan
Mientras que DateTime representa un punto en el tiempo, TimeSpan representa una duración, como 2 horas o 90 minutos.
Es una duración sin calendario asociado. Se utiliza para resultados de cronómetros, tiempos de espera y el intervalo entre dos fechas.
Crear un TimeSpan
Un constructor acepta horas, minutos y segundos: new TimeSpan(hours, minutes, seconds).
Por tanto, new TimeSpan(1, 30, 0) representa una hora y treinta minutos. El valor se muestra en un formato claro h:mm:ss.
using System;
class Program
{
static void Main()
{
TimeSpan span = new TimeSpan(1, 30, 0);
Console.WriteLine(span);
}
}Métodos de fábrica
A menudo resulta más claro utilizar un método de fábrica. TimeSpan.FromMinutes(90) crea un intervalo de 90 minutos.
También existen métodos equivalentes: FromHours, FromSeconds, FromDays y FromMilliseconds.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span);
}
}Valores totales frente a componentes
TimeSpan tiene dos familias de propiedades. Hours, Minutes y Seconds son los componentes desglosados.
Las versiones Total..., como TotalMinutes, expresan la duración completa en una sola unidad, como un número decimal.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span.Hours);
Console.WriteLine(span.TotalMinutes);
}
}Componentes frente a totales
Para 90 minutos, Hours vale 1 y Minutes vale 30, porque la duración se descompone en 1 hora y 30 minutos.
Sin embargo, TotalHours vale 1.5 y TotalMinutes vale 90, ya que cuentan todo el intervalo en una sola unidad.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span.TotalHours);
}
}Restar dos fechas
Cuando resta un DateTime de otro, el resultado es un TimeSpan.
Esta es la forma habitual de averiguar cuánto tiempo transcurrió entre dos momentos, por ejemplo, la duración de un evento.
using System;
class Program
{
static void Main()
{
DateTime start = new DateTime(2024, 3, 5, 9, 0, 0);
DateTime end = new DateTime(2024, 3, 5, 11, 30, 0);
TimeSpan diff = end - start;
Console.WriteLine(diff.TotalHours);
}
}Sumar TimeSpans
Puede sumar o restar valores TimeSpan con los operadores habituales + y -.
Combinar dos duraciones produce una más larga, lo que resulta útil para sumar varios intervalos.
using System;
class Program
{
static void Main()
{
TimeSpan a = TimeSpan.FromMinutes(45);
TimeSpan b = TimeSpan.FromMinutes(15);
Console.WriteLine((a + b).TotalMinutes);
}
}Duraciones negativas
Un TimeSpan puede ser negativo si el final es anterior al inicio o después de una resta.
El método Duration devuelve el valor absoluto y Negate invierte el signo. Estos métodos resultan útiles cuando solo le importa la magnitud.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromHours(-3);
Console.WriteLine(span.Duration().TotalHours);
}
}Comparar duraciones
Los valores TimeSpan se comparan con <, > y ==, igual que los números.
Esto permite comprobar si una duración es mayor que otra, por ejemplo, para imponer un tiempo máximo permitido.
using System;
class Program
{
static void Main()
{
TimeSpan limit = TimeSpan.FromHours(2);
TimeSpan used = TimeSpan.FromMinutes(150);
Console.WriteLine(used > limit);
}
}Cero y constantes
TimeSpan.Zero representa que no ha transcurrido tiempo; es un punto de partida práctico para las sumas.
También existen TimeSpan.MinValue y TimeSpan.MaxValue para los límites extremos de una duración.
using System;
class Program
{
static void Main()
{
TimeSpan total = TimeSpan.Zero;
total += TimeSpan.FromMinutes(10);
Console.WriteLine(total.TotalMinutes);
}
}Dar formato a un TimeSpan
Puede dar formato a un TimeSpan con una cadena personalizada. Por ejemplo, @"hh\:mm" muestra las horas y los minutos.
Las barras inversas escapan los dos puntos para que aparezcan literalmente. Para una salida rápida, normalmente basta con el ToString predeterminado.
using System;
class Program
{
static void Main()
{
TimeSpan span = new TimeSpan(2, 5, 0);
Console.WriteLine(span.ToString(@"hh\:mm"));
}
}Comprobación rápida
Tiene un TimeSpan de 90 minutos. ¿Qué propiedad devuelve el valor 1.5?
Resumen
Un TimeSpan es una duración. Puede crearlo con new TimeSpan(...) o con métodos de fábrica como FromMinutes.
Las propiedades de componentes (Hours) son diferentes de las propiedades Total.... Restar dos DateTime produce un TimeSpan, y puede sumar, comparar y dar formato a las duraciones.
Preguntas frecuentes
¿La lección «TimeSpan y duraciones» es gratis?
Sí — el texto completo de «TimeSpan y duraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «TimeSpan y duraciones»?
Mida intervalos de tiempo Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «TimeSpan y duraciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Crear DateTimes
- Formatear fechas
- TimeSpan y duraciones
- Aritmética de fechas