Para converter um Data
opor-se a DataLocal
ou DataLocalHora
e vice-versa em Java, você pode usar o java.time
pacote introduzido no Java 8. Aqui está um guia detalhado sobre como realizar essas conversões:
1. Conversão Data
para DataLocal
Usando Instante
e ID da zona
:
- Primeiro, converta o
Data
para umInstante
. - Então, use o
Instante
para criar umDataLocal
com o desejadoID da zona
.
importar java.time.Instant; importar java.time.LocalDate; importar java.time.ZoneId; importar java.util.Date; classe pública DateToLocalDate { public static void main (String [] args) { Data data = nova Data (); // data atual Instant instant = date.toInstant(); LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); System.out.println("Data: " + data); System.out.println("LocalDate: " + localDate); } }
2. Conversão DataLocal
para Data
Usando ID da zona
e Instante
:
- Converta o
DataLocal
para umZonedDateTime
com o desejadoID da zona
. - Depois, converta o
ZonedDateTime
para umInstante
e use-o para criar umData
.
importar java.time.LocalDate; importar java.time.ZoneId; importar java.time.ZonedDateTime; importar java.util.Date; classe pública LocalDateToDate { public static void main(String[] args) { LocalDate localDate = LocalDate.now(); // data atual ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault()); Data data = Date.from(zonedDateTime.toInstant()); System.out.println("LocalDate: " + localDate); System.out.println("Data: " + data); } }
3. Conversão Data
para DataLocalHora
Usando Instante
e ID da zona
:
- Primeiro, converta o
Data
para umInstante
. - Então, use o
Instante
para criar umDataLocalHora
com o desejadoID da zona
.
importar java.time.Instant; importar java.time.LocalDateTime; importar java.time.ZoneId; importar java.util.Date; classe pública DateToLocalDateTime { public static void main(String[] args) { Data data = new Date(); // data atual Instant instant = date.toInstant(); LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println("Data: " + data); System.out.println("LocalDateTime: " + localDateTime); } }
4. Conversão DataLocalHora
para Data
Usando ID da zona
e Instante
:
- Converta o
DataLocalHora
para umZonedDateTime
com o desejadoID da zona
. - Depois, converta o
ZonedDateTime
para umInstante
e use-o para criar umData
.
importar java.time.LocalDateTime; importar java.time.ZoneId; importar java.time.ZonedDateTime; importar java.util.Date; classe pública LocalDateTimeToDate { public static void main(String[] args) { LocalDateTime localDateTime = LocalDateTime.now(); // data e hora atuais ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault()); Data data = Date.from(zonedDateTime.toInstant()); System.out.println("LocalDateTime: " + localDateTime); System.out.println("Data: " + data); } }
5. Resumo
- De
Data
paraDataLocal
ouDataLocalHora
:- Converter
Data
paraInstante
. - Usar
Instante
comID da zona
para criarDataLocal
ouDataLocalHora
.
- Converter
- De
DataLocal
ouDataLocalHora
paraData
:- Usar
ID da zona
para criarZonedDateTime
. - Converter
ZonedDateTime
paraInstante
. - Usar
Instante
para criarData
.
- Usar
Esses métodos garantem que as conversões respeitem o fuso horário e mantenham as informações corretas de data e hora.