Trabalho com datas em Java: visão geral de bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com datas em Java: bibliotecas e ferramentas



Trabalhar com datas e horas é uma das tarefas principais em qualquer aplicação. Em Java, por muito tempo, as classes padrão java.util.Date e java.util.Calendar foram criticadas devido à inconveniência, mutabilidade e suporte deficiente a fusos horários. No entanto, com o lançamento do Java 8, a situação mudou drasticamente. Neste artigo, vamos analisar as principais bibliotecas e ferramentas para trabalhar com datas em Java, que ajudarão você a escrever código limpo e confiável.



1. Biblioteca padrão java.time (Java 8+)



A partir do Java 8, os desenvolvedores têm acesso ao poderoso pacote java.time, baseado no padrão ISO-8601. Esta é a forma recomendada de trabalhar com datas e horas. Principais classes:



  • LocalDate — data sem hora (ano, mês, dia).
  • LocalTime — hora sem data (horas, minutos, segundos, nanossegundos).
  • LocalDateTime — combinação de data e hora.
  • ZonedDateTime — data e hora considerando o fuso horário.
  • Instant — momento em UTC (para tempo de máquina).
  • Duration e Period — para trabalhar com intervalos.


Exemplo: criação e formatação de data



import java.time.LocalDate;import java.time.format.DateTimeFormatter;

public class DateExample { public static void main(String[] args) { // Data atual LocalDate today = LocalDate.now(); System.out.println("Hoje: " + today);

// Criação de uma data específica LocalDate birthDate = LocalDate.of(1990, 5, 15); System.out.println("Data de nascimento: " + birthDate);

// Formatação DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); String formatted = birthDate.format(formatter); System.out.println("Data formatada: " + formatted);

// Parsing de string String dateStr = "2023-12-31"; LocalDate parsedDate = LocalDate.parse(dateStr); System.out.println("Parseado: " + parsedDate); }}


Exemplo: cálculo da diferença entre datas



import java.time.LocalDate;import java.time.Period;import java.time.temporal.ChronoUnit;

public class DateDifference { public static void main(String[] args) { LocalDate start = LocalDate.of(2020, 1, 1); LocalDate end = LocalDate.of(2024, 3, 15);

Period period = Period.between(start, end); System.out.println("Diferença: " + period.getYears() + " anos, " + period.getMonths() + " meses, " + period.getDays() + " dias");

long daysBetween = ChronoUnit.DAYS.between(start, end); System.out.println("Total de dias: " + daysBetween); }}


2. Joda-Time (para versões antigas do Java)



Antes do surgimento do java.time, o padrão de facto era a biblioteca Joda-Time. Ela fornecia classes imutáveis convenientes e suporte a fusos horários. Se você trabalha com Java 7 ou inferior, Joda-Time é uma excelente escolha.



Adição (Maven):

<dependency>    <groupId>joda-time</groupId>    <artifactId>joda-time</artifactId>    <version>2.12.7</version></dependency>


Exemplo: trabalho com Joda-Time



import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;

public class JodaExample { public static void main(String[] args) { // Data e hora atuais DateTime now = new DateTime(); System.out.println("Agora: " + now);

// Criação de data DateTime specificDate =

Recommendations