No pase fechas como cadenas a su base de datos MySQL. Es mejor, más fácil y más seguro pasar objetos de fecha. Por un lado, lo libera del formato y de cualquier problema de formato. Mejor, pasa instancias de una clase desde java.time
, la moderna API de fecha y hora de Java. En su caso, un LocalDateTime
lo haré.
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);
El LocalDateTime
obtenido es:
Simplifiqué un poco su conversión de cadena de época. Usa un long
primitivo en minúsculas en lugar de un Long
objeto. Estoy usando su zona horaria, Asia/Calcuta, asumiendo que los valores de su base de datos están en esta zona horaria. Las recomendaciones normales son mantener los valores de la base de datos en UTC, al menos si existe alguna posibilidad de que los datos se utilicen alguna vez fuera de su zona horaria. Si desea esto, use esta conversión en lugar de la anterior:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Enlace: Tutorial de Oracle:fecha y hora
explicando cómo usar java.time
.