Non passare le date come stringhe al tuo database MySQL. È meglio, sia più facile che più sicuro passare oggetti data. Per prima cosa, ti solleva dalla formattazione e da eventuali problemi di formattazione. Meglio, passa le istanze di una classe da java.time
, la moderna API di data e ora Java. Nel tuo caso un LocalDateTime
lo farà.
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);
Il LocalDateTime
ottenuto è:
Ho semplificato un po' la tua conversione da epoch string. Usa una primitiva, minuscola long
piuttosto che un Long
oggetto. Sto usando il tuo fuso orario, Asia/Calcutta, supponendo che i valori del tuo database si trovino in questo fuso orario. I normali consigli sono di mantenere i valori del database in formato UTC, almeno se esiste la possibilità che i dati vengano mai utilizzati al di fuori del tuo fuso orario. Se vuoi questo, usa questa conversione invece di quella sopra:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Link: Tutorial Oracle:data e ora
spiegando come usare java.time
.