FC

Filipe Cardoso19/07/2024 13:18
Compartilhe

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.

Compartilhe
Comentários (0)