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
- Criando DateTimes
- Formatando datas
- TimeSpan e durações
- Aritmética de datas