TimeSpan e durações
Meça intervalos de tempo.
TimeSpan e durações é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
O que é um TimeSpan
Enquanto DateTime representa um ponto no tempo, TimeSpan representa uma duração, como 2 horas ou 90 minutos.
É um Duration sem calendário associado. Você pode usá-lo para resultados de cronômetros, limites de tempo e o intervalo entre duas datas.
Criando um TimeSpan
Um construtor recebe horas, minutos e segundos: new TimeSpan(hours, minutes, seconds).
Assim, new TimeSpan(1, 30, 0) representa uma hora e trinta minutos. O valor é exibido em um 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
Muitas vezes, fica mais legível usar um método de fábrica. TimeSpan.FromMinutes(90) cria um intervalo de 90 minutos.
Há auxiliares correspondentes: FromHours, FromSeconds, FromDays e FromMilliseconds.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span);
}
}Valores totais e de componentes
TimeSpan tem duas famílias de propriedades. Hours, Minutes e Seconds são os componentes separados.
As versões Total..., como TotalMinutes, expressam a duração inteira em uma única unidade, como um número decimal.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span.Hours);
Console.WriteLine(span.TotalMinutes);
}
}Componentes versus total, explicado
Para 90 minutos, Hours é 1 e Minutes é 30, porque a duração se divide em 1 hora e 30 minutos.
Já TotalHours é 1,5 e TotalMinutes é 90, pois essas propriedades contam o intervalo inteiro em uma única unidade.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span.TotalHours);
}
}Subtraindo duas datas
Quando você subtrai um DateTime de outro, o resultado é um TimeSpan.
Essa é a forma mais comum de descobrir quanto tempo passou entre dois momentos, como a duração de um 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);
}
}Adicionando TimeSpans
Você pode adicionar ou subtrair valores de TimeSpan com os operadores normais + e -.
Combinar duas durações produz uma duração mais longa, o que é útil para somar vários intervalos.
using System;
class Program
{
static void Main()
{
TimeSpan a = TimeSpan.FromMinutes(45);
TimeSpan b = TimeSpan.FromMinutes(15);
Console.WriteLine((a + b).TotalMinutes);
}
}Durações negativas
Um TimeSpan pode ser negativo se o fim ocorrer antes do início ou após uma subtração.
O método Duration retorna o valor absoluto, e Negate inverte o sinal. Esses recursos ajudam quando você só se importa com a magnitude.
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromHours(-3);
Console.WriteLine(span.Duration().TotalHours);
}
}Comparando durações
Valores de TimeSpan podem ser comparados com <, > e ==, assim como números.
Isso permite verificar se uma duração é maior que outra, por exemplo, para impor um tempo máximo permitido.
using System;
class Program
{
static void Main()
{
TimeSpan limit = TimeSpan.FromHours(2);
TimeSpan used = TimeSpan.FromMinutes(150);
Console.WriteLine(used > limit);
}
}Zero e constantes
TimeSpan.Zero representa a ausência de tempo transcorrido e é um ponto de partida útil para somas.
Também há TimeSpan.MinValue e TimeSpan.MaxValue, que representam os limites extremos de uma duração.
using System;
class Program
{
static void Main()
{
TimeSpan total = TimeSpan.Zero;
total += TimeSpan.FromMinutes(10);
Console.WriteLine(total.TotalMinutes);
}
}Formatando um TimeSpan
Você pode formatar um TimeSpan com uma cadeia personalizada. Por exemplo, @"hh\:mm" mostra horas e minutos.
As barras invertidas fazem o escape dos dois-pontos para que ele apareça literalmente. Para uma saída rápida, o ToString padrão geralmente é suficiente.
using System;
class Program
{
static void Main()
{
TimeSpan span = new TimeSpan(2, 5, 0);
Console.WriteLine(span.ToString(@"hh\:mm"));
}
}Verificação rápida
Você tem um TimeSpan de 90 minutos. Qual propriedade retorna o valor 1,5?
Recapitulação
Um TimeSpan é uma duração. Crie-o com new TimeSpan(...) ou com métodos de fábrica como FromMinutes.
As propriedades de componentes (Hours) diferem das propriedades Total.... Subtrair dois DateTimes produz um TimeSpan, e você pode adicionar, comparar e formatar durações.
Perguntas Frequentes
A aula “TimeSpan e durações” é grátis?
Sim — o texto completo de “TimeSpan e durações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “TimeSpan e durações”?
Meça intervalos de tempo. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “TimeSpan e durações”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Criando DateTimes
- Formatando datas
- TimeSpan e durações
- Aritmética de datas