Trabalhando com Data e Hora em Java
- #RESTful
- #REST
- #Java
Fazer uso de datas, horários e agendas costuma ser uma tarefa comum no desenvolvimento de software. "java.time" é a API de data e hora do Java que oferece várias classes e métodos para lidar com essas operações. Neste artigo, exploro um pouco do que aprendi sobre como trabalhar com datas e horas em Java, usando um exemplo de código para ilustrar os conceitos principais.
Instanciação
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class App {
public static void main(String[] args) {
// Instanciação de data-hora local
LocalDate d01 = LocalDate.now();
LocalTime t01 = LocalTime.now();
LocalDateTime dt01 = LocalDateTime.now();
Instant i01 = Instant.now();
System.out.println(d01);
System.out.println(t01);
System.out.println(dt01);
System.out.println(i01);
}
}
No trecho de código acima, utilizei "LocalDate", "LocalTime", "LocalDateTime" e "Instant" para obter a data e hora atuais. "LocalDate" armazena apenas a data, "LocalTime" armazena apenas a hora, "LocalDateTime" armazena data e hora, e "Instant" armazena um ponto específico no tempo.
Também podemos criar instâncias dessas classes a partir de strings; veja abaixo:
// Instanciação de data-hora local com parse
LocalDate d02 = LocalDate.parse("2024-07-30");
LocalDateTime dt02 = LocalDateTime.parse("2024-07-30T03:55:33.929");
Instant i02 = Instant.parse("2024-07-30T03:55:33.929Z");
OffsetDateTime odt = OffsetDateTime.parse("2024-07-30T03:55:33.929-03:00");
Instant i03 = odt.toInstant();
System.out.println(d02);
System.out.println(dt02);
System.out.println(i02);
System.out.println(i03); //-03 é o fuso horário!
O método "parse" foi usado acima para criar instâncias de "LocalDate", "LocalDateTime", "Instant" e "OffsetDateTime" a partir de strings formatadas. "OffsetDateTime" inclui informações sobre o fuso horário.
Formatação
Podemos utilizar formatos customizáveis para trabalhar com data e hora em strings; utilizando o "DateTimeFormatter"
// Formatação
DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
DateTimeFormatter fmt2 = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
DateTimeFormatter fmt3 = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm").withZone(ZoneId.systemDefault());
LocalDate d03 = LocalDate.parse("30/07/2024", fmt1);
LocalDateTime dt03 = LocalDateTime.parse("30/07/2024 03:24", fmt2);
Instant i04 = Instant.parse("2024-07-30T03:55:33.929Z");
Instant i05 = Instant.now();
System.out.println(d03);
System.out.println(dt03);
System.out.println(d03.format(fmt1));
System.out.println(dt03.format(fmt2));
System.out.println(fmt3.format(i04));
System.out.println(fmt3.format(i05));
Operações com Datas
Abaixo vemos também algumas operações feitas com datas. Vale ressaltar que existem diversas; apresento apenas alguns exemplos:
// Operações
LocalDate d05 = d02.minusDays(7);
System.out.println(d05);
LocalDate d06 = d02.plusDays(7);
System.out.println(d06);
As operações "minusDays" e "plusDays" permitem subtrair e adicionar dias a uma instância de "LocalDate", respectivamente.
O pequeno artigo visou cobrir alguns dos conceitos básicos de se utilizar data e hora com a linguagem Java; fornecendo informações sobre como instanciar, formatar e manipular estes tipos de dados.