Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Recuperar data do banco de dados

Boa tarde a todos, fiquei com uma dúvida referente a recuperação de data do banco de dados, esse assunto não foi abordado no vídeo.

Nossa classe tem um atributo do tipo Calendar data, mas quando usamos o getData ele vem com um toString todo bizarro.

Gostaria de saber como recuperar a informação da data no formato dd-MM-yyyy HH:MM corretamente, eu tentei usando o seguinte código, mas tive uma diferença de -3 horas do valor existente no banco de dados.

    public String getDataFormatada() {
        ZoneId defaultZoneId = ZoneId.systemDefault();
        Instant instant = data.toInstant();
        LocalDateTime localDate = instant.atZone(defaultZoneId).toLocalDateTime();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:MM");

        return localDate.format(formatter);
    }

Esperado: 06-09-2018 12:09

Resultado: 06-09-2018 09:09

2 respostas

Fala ai Anderson, de boa ?

Cara provavelmente o horário da máquina que está rodando seu banco está com o fuso-horário diferente do seu e por isso está com esse problema, imagino.

solução!

Obrigado por tentar ajudar, de certa forma era isso, depois de algumas muitas tentativas, consegui achar uma solução no stack overflow que resolveu o problema de forma até simples.

O código final ficou assim:

    public String getDataFormatada() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm")
                .withZone(ZoneOffset.UTC);
        return formatter.format(data.toInstant());
    }

Fonte: Format Instant to String