Como converter TimeStamp para uma Data?

Boa noite pessoal,

Recebo um TimeStemp de uma API em String e preciso convertê-la para uma Data, porém não estou conseguindo.

TimeStemp = “1611063758”
Preciso converter para “19/01/2021 13:42:38”

Tentei o código abaixo, porém ele só acertou o dia e mês.
new Date(Long.valueOf(“1611063758”)) = “1970-01-19 12:31:03.758”

alguém pode me ajudar?

Pelo que vi, se vc realmente precisa usar a classe Date, para vc conseguir a data certa vc precisa multiplicar seu timestamp por 1000L.

import java.text.SimpleDateFormat;
import java.util.Date;

class TestWithDate {
  public static void main(String... args) {
    Date time = new Date(1611063758 * 1000L);

    String formatted = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").format(time);

    System.out.println(formatted);
  }
}

Mas se estiver usando Java 8 ou mais recente, é melhor usar a classe Instant.

import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

class TestWithInstant {
  public static void main(String... args) {
    Instant instant = Instant.ofEpochSecond(1611063758);

    DateTimeFormatter formatter = // @formatter:off
      DateTimeFormatter
        .ofPattern("dd/MM/yyyy hh:mm:ss")
        .withZone(ZoneId.systemDefault());

    System.out.println(formatter.format(instant));
  }
}

Funcionou, Obrigado

1 curtida