Não passe datas como strings para seu banco de dados MySQL. É melhor, mais fácil e seguro passar objetos de data. Por um lado, alivia a formatação e quaisquer problemas de formatação. Melhor, passe instâncias de uma classe de
java.time
, a moderna API de data e hora Java. No seu caso, um LocalDateTime
vai fazer. String ep ="a1527069600";
long epoch = Long.parseLong(ep.substring(1));
Instant inst = Instant.ofEpochSecond(epoch);
LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();
System.out.println(ldt);
PreparedStatement ps = myDatabaseConnection.prepareStatement(
"insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);
O
LocalDateTime
obtido é:Eu simplifiquei um pouco sua conversão da string de época. Use um
long
primitivo e minúsculo em vez de um Long
objeto. Estou usando seu fuso horário, Ásia/Calcutá, supondo que os valores do banco de dados estejam nesse fuso horário. As recomendações normais são manter os valores do banco de dados em UTC, pelo menos se houver alguma possibilidade de que os dados sejam usados fora do seu fuso horário. Se você quiser isso, use esta conversão em vez da acima: LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Link: Tutorial Oracle:Data e hora explicando como usar
java.time
.