Übergeben Sie Datumsangaben nicht als Zeichenfolgen an Ihre MySQL-Datenbank. Es ist besser, sowohl einfacher als auch sicherer, Datumsobjekte zu übergeben. Zum einen entlastet es Sie von der Formatierung und allen Formatierungsproblemen. Übergeben Sie am besten Instanzen einer Klasse von java.time
, die moderne Java-API für Datum und Uhrzeit. In Ihrem Fall eine LocalDateTime
reicht.
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);
Die LocalDateTime
erhalten ist:
Ich habe Ihre Konvertierung von der Epochenzeichenfolge etwas vereinfacht. Verwenden Sie einen primitiven, kleingeschriebenen long
statt eines Long
Objekt. Ich verwende Ihre Zeitzone, Asien/Kalkutta, und gehe davon aus, dass Ihre Datenbankwerte in dieser Zeitzone liegen. Normale Empfehlungen sind, Datenbankwerte in UTC zu halten, zumindest wenn die Möglichkeit besteht, dass die Daten jemals außerhalb Ihrer Zeitzone verwendet werden. Wenn Sie dies wünschen, verwenden Sie diese Konvertierung anstelle der obigen:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Link: Oracle-Tutorial:Date Time
erklärt, wie man java.time
verwendet .