Skicka inte datum som strängar till din MySQL-databas. Det är bättre, både enklare och säkrare att skicka datumobjekt. För det första, det befriar dig från formatering och eventuella formateringsproblem. Bäst, skicka instanser av en klass från java.time
, det moderna Java-API:et för datum och tid. I ditt fall en LocalDateTime
kommer att göra.
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);
LocalDateTime
erhållen är:
Jag förenklade din konvertering från epoksträng lite. Använd en primitiv, gemen long
snarare än en Long
objekt. Jag använder din tidszon, Asien/Calcutta, förutsatt att dina databasvärden är i denna tidszon. Normala rekommendationer är att hålla databasvärden i UTC, åtminstone om det finns någon möjlighet att data någonsin kommer att användas utanför din tidszon. Om du vill ha detta, använd denna konvertering istället för den ovan:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Länk: Oracle handledning:Datum Tid
förklara hur man använder java.time
.