Period e Aritmética de Datas
Some e subtraia datas
Period e Aritmética de Datas é uma aula grátis de Java 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 Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
Quantidades baseadas em datas
Enquanto a Duration mede o tempo em horas e segundos, o Period mede quantidades em anos, meses e dias. Ele é a ferramenta certa para cálculos de calendário, como idades e prazos.
Adicionando dias
LocalDate oferece plusDays para avançar. Lembre-se de que o resultado é um novo valor imutável.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2026, 5, 30);
System.out.println(start.plusDays(10));
}
}Adicionando meses e anos
plusMonths e plusYears deslocam a data em unidades maiores e lidam corretamente com a duração dos meses.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2026, 1, 31);
System.out.println(start.plusMonths(1));
System.out.println(start.plusYears(2));
}
}Subtraindo datas
Use minusDays, minusWeeks e métodos semelhantes para retroceder no tempo.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.minusWeeks(2));
}
}Criando um período
Crie um Period com of ou com fábricas de uma única unidade, como ofMonths, e depois adicione-o a uma data.
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
Period p = Period.of(1, 2, 3);
LocalDate date = LocalDate.of(2026, 1, 1);
System.out.println(date.plus(p));
}
}Período entre datas
Period.between mede o intervalo entre duas datas em anos, meses e dias.
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate from = LocalDate.of(2020, 1, 15);
LocalDate to = LocalDate.of(2026, 5, 30);
Period p = Period.between(from, to);
System.out.println(p.getYears() + "y " + p.getMonths() + "m " + p.getDays() + "d");
}
}Calculando uma idade
Um uso clássico de Period.between é calcular a idade de alguém em anos completos.
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate birth = LocalDate.of(2000, 6, 15);
LocalDate today = LocalDate.of(2026, 5, 30);
int age = Period.between(birth, today).getYears();
System.out.println(age);
}
}Contando o total de dias
Period divide o intervalo em anos, meses e dias. Para obter uma única contagem total de dias, use ChronoUnit.DAYS.between.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDate from = LocalDate.of(2026, 1, 1);
LocalDate to = LocalDate.of(2026, 12, 31);
long days = ChronoUnit.DAYS.between(from, to);
System.out.println(days);
}
}Flexibilidade de ChronoUnit
ChronoUnit pode contar em muitas unidades: DAYS, WEEKS, MONTHS e YEARS. Cada chamada a between retorna um único número.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDate from = LocalDate.of(2026, 1, 1);
LocalDate to = LocalDate.of(2026, 12, 31);
System.out.println(ChronoUnit.WEEKS.between(from, to));
System.out.println(ChronoUnit.MONTHS.between(from, to));
}
}Encontrando o próximo dia da semana
A classe TemporalAdjusters fornece ajustes inteligentes, como avançar para o primeiro dia do mês seguinte.
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.with(TemporalAdjusters.firstDayOfNextMonth()));
}
}Período versus ChronoUnit
Use o Period quando quiser uma divisão humana em anos, meses e dias. Use ChronoUnit.between quando quiser uma única contagem total em uma unidade.
Verificação rápida
Teste suas habilidades de aritmética de datas.
Revisão
Você aprendeu aritmética de datas:
plusDays,plusMonthseplusYearsdeslocam datas sem alterá-lasPeriodmede anos, meses e dias, sendo ideal para idadesPeriod.betweenfornece uma divisão humana do intervaloChronoUnit.betweenfornece um único total na unidade escolhidaTemporalAdjustersgerencia saltos inteligentes, como o primeiro dia do mês seguinte
Perguntas Frequentes
A aula “Period e Aritmética de Datas” é grátis?
Sim — o texto completo de “Period e 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 Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Period e Aritmética de Datas”?
Some e subtraia datas Você pratica Java 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 Java Academy?
Nenhuma experiência prévia é necessária. Java 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 “Period e 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 Java Academy?
Sim. Cada aula de Java 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
- LocalDate, LocalTime, LocalDateTime
- Instant e Duration
- Period e Aritmética de Datas
- Formatação com DateTimeFormatter