0Pricing
C# Academy · Aula

Aritmética de datas

Some, subtraia e compare.

Aritmética de datas é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 4 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.

Fazendo cálculos com datas

Os valores de DateTime são imutáveis: os cálculos nunca alteram o original. Em vez disso, cada operação retorna um DateTime completamente novo.

Esta lição aborda como adicionar e subtrair tempo, comparar datas e responder a perguntas como quantos dias faltam para um evento.

AddDays

O método AddDays retorna uma data tantos dias depois. Passe um número negativo para voltar no tempo.

Como DateTime é imutável, você precisa usar o valor retornado; o original permanece inalterado.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        DateTime later = d.AddDays(10);
        Console.WriteLine(later.ToString("yyyy-MM-dd"));
    }
}

A família Add

Há um método Add para cada unidade: AddHours, AddMinutes, AddSeconds, AddMonths e AddYears.

Todos aceitam números positivos ou negativos, portanto, um único conjunto de métodos trata tanto do futuro quanto do passado.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        Console.WriteLine(d.AddHours(5).Hour);
    }
}

AddMonths lida com o estouro

AddMonths lida de forma inteligente com a duração dos meses. Adicionar um mês a 31 de janeiro resulta em 28 ou 29 de fevereiro, não em uma data inválida.

Isso evita que você precise verificar manualmente quantos dias cada mês tem.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 1, 31);
        Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
    }
}

Voltando no tempo

Para voltar ao passado, passe um argumento negativo. AddDays(-7) fornece a data de uma semana antes.

Não existe um método separado para subtrair dias; valores negativos resolvem isso de forma simples.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
    }
}

Adicionando um TimeSpan

Você pode adicionar um TimeSpan diretamente a um DateTime com o operador + ou com o método Add.

Isso é conveniente quando você já tem uma duração e quer deslocar uma data usando-a.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime later = d + TimeSpan.FromHours(3);
        Console.WriteLine(later.Hour);
    }
}

Diferença entre datas

Subtrair uma data de outra produz um TimeSpan que descreve o intervalo entre elas.

Leia TotalDays para contar os dias entre as datas, mesmo quando o intervalo atravessa meses ou anos.

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 1, 1);
        DateTime end = new DateTime(2024, 3, 1);
        Console.WriteLine((end - start).TotalDays);
    }
}

Dias até um evento

Uma tarefa comum é contar os dias até uma data futura. Subtraia hoje da data-alvo e leia TotalDays ou Days.

Usar datas fixas aqui mantém a saída previsível durante o aprendizado.

using System;

class Program
{
    static void Main()
    {
        DateTime today = new DateTime(2024, 3, 1);
        DateTime party = new DateTime(2024, 3, 15);
        Console.WriteLine((party - today).Days);
    }
}

Comparando datas

Valores de DateTime podem ser comparados com <, > e ==. Uma data anterior é menor que uma data posterior.

Também há métodos como CompareTo e Equals quando você precisa de um resultado formal de comparação.

using System;

class Program
{
    static void Main()
    {
        DateTime a = new DateTime(2024, 1, 1);
        DateTime b = new DateTime(2024, 6, 1);
        Console.WriteLine(a < b);
    }
}

Anos bissextos e dias do mês

Dois auxiliares estáticos respondem a perguntas sobre o calendário. DateTime.IsLeapYear(year) retorna verdadeiro para anos bissextos.

DateTime.DaysInMonth(year, month) informa quantos dias um determinado mês tem, tratando fevereiro corretamente.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(DateTime.IsLeapYear(2024));
        Console.WriteLine(DateTime.DaysInMonth(2024, 2));
    }
}

Início e fim do dia

Para obter o início de um dia, use a propriedade Date, que remove o horário e deixa a meia-noite.

Para obter o último instante de um dia, adicione um dia e subtraia uma unidade mínima de tempo, ou adicione 23:59:59. A propriedade Date é o recurso básico mais simples.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
        Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
    }
}

Verificação rápida

Você começa em 31 de janeiro de 2024 e chama AddMonths(1). Que data obtém?

Recapitulação

Os cálculos com DateTime retornam novos valores. Desloque datas com AddDays, AddMonths e métodos semelhantes, usando números negativos para voltar no tempo.

Subtraia datas para obter um TimeSpan, compare-as com operadores e use IsLeapYear, DaysInMonth e Date em tarefas relacionadas ao calendário.

Perguntas Frequentes

A aula “Aritmética de datas” é grátis?

Sim — o texto completo de “Aritmética de datas” é 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 “Aritmética de datas”?

Some, subtraia e compare. 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 4 de 4.

Quanto tempo leva a aula “Aritmética de datas”?

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