Converter Date para LocalDate ou LocalDateTime do Java 8

Veja como converter um Objeto do tipo Date do Java para LocalDate ou LocalDateTime do Java 8

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - DICA

Última atualização em: | 20179 Visualizações

Date to LocalDate

O código a seguir mostra como é possível converter um objeto Date do Java para um Objeto LocalDate do Java 8 e depois fazer a conversão para Date novamente. Veja:

Date date = new Date();

LocalDate localDate = date.toInstant().atZone( ZoneId.systemDefault() ).toLocalDate();

System.out.println( localDate );

Date saida = Date.from( localDate.atStartOfDay( ZoneId.systemDefault() ).toInstant() );

System.out.println( saida );

Veja a saída no console:

2018-03-13
Tue Mar 13 00:00:00 BRT 2018


Date to LocalDateTime

O código a seguir mostra como é possível converter um objeto Date do Java para um Objeto LocalDateTime do Java 8 e depois fazer a conversão para Date novamente. Veja:

Date date = new Date();

LocalDateTime localDateTime = date.toInstant().atZone( ZoneId.systemDefault() ).toLocalDateTime();

System.out.println( localDateTime );

Date saida02 = Date.from( localDateTime.atZone( ZoneId.systemDefault() ).toInstant() );

System.out.println( saida02 );

Veja a saída no console:

2018-03-13T17:09:07.713
Tue Mar 13 17:09:07 BRT 2018

Veja a classe completa usando conversões entre Date/LocalDate e Date/LocalDateTime:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

public class SampleTest {

    public static void main(String[] args) {
        Date date = new Date();

        LocalDate localDate = date.toInstant().atZone( ZoneId.systemDefault() ).toLocalDate();

        System.out.println( localDate );

        Date saida = Date.from( localDate.atStartOfDay( ZoneId.systemDefault() ).toInstant() );

        System.out.println( saida );

        LocalDateTime localDateTime = date.toInstant().atZone( ZoneId.systemDefault() ).toLocalDateTime();

        System.out.println( localDateTime );

        Date saida02 = Date.from( localDateTime.atZone( ZoneId.systemDefault() ).toInstant() );

        System.out.println( saida02 );
    }
}

Note que o LocalDate trabalha apenas com a data, não considerando horas e minutos, já o LocalDateTime trabalha com datas e horas.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!