Geef datums niet als tekenreeksen door aan uw MySQL-database. Het is beter, zowel gemakkelijker als veiliger om datumobjecten door te geven. Om te beginnen verlost het u van opmaak en eventuele opmaakproblemen. Beste, geef instanties door van een klasse uit java.time
, de moderne Java-API voor datum en tijd. In jouw geval een LocalDateTime
zal doen.
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);
De LocalDateTime
verkregen is:
Ik heb je conversie van epoch string een beetje vereenvoudigd. Gebruik een primitieve, kleine long
in plaats van een Long
object. Ik gebruik uw tijdzone, Azië/Calcutta, ervan uitgaande dat uw databasewaarden zich in deze tijdzone bevinden. Normale aanbevelingen zijn om databasewaarden in UTC te houden, tenminste als de mogelijkheid bestaat dat de gegevens ooit buiten uw tijdzone worden gebruikt. Als je dit wilt, gebruik dan deze conversie in plaats van de bovenstaande:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Link: Oracle-tutorial:Datum Tijd
uitleg over het gebruik van java.time
.