0Pricing
C# Academy · Aula

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

  1. Criando DateTimes
  2. Formatando datas
  3. TimeSpan e durações
  4. Aritmética de datas
← Voltar para C# Academy