Send ikke datoer som strenge til din MySQL-database. Det er bedre, både nemmere og sikrere at sende dateobjekter. For det første fritager det dig for formatering og eventuelle formateringsproblemer. Bedst videregive forekomster af en klasse fra java.time
, den moderne Java dato og klokkeslæt API. I dit tilfælde en LocalDateTime
vil gøre.
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
opnået er:
Jeg forenklede din konvertering fra epokestreng en smule. Brug en primitiv, lille long
i stedet for en Long
objekt. Jeg bruger din tidszone, Asien/Calcutta, forudsat at dine databaseværdier er i denne tidszone. Normale anbefalinger er at holde databaseværdier i UTC, i det mindste hvis der er nogen mulighed for, at dataene nogensinde vil blive brugt uden for din tidszone. Hvis du ønsker dette, skal du bruge denne konvertering i stedet for den ovenfor:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Link: Oracle-selvstudie:Dato Tid
forklarer, hvordan du bruger java.time
.