SimpleDateFormatter.parse genera resultados diferentes a los especificados
Al convertir marcas de tiempo UNIX en fechas usando SimpleDateFormat, puede encontrar discrepancias entre el formato especificado y el salida.
En el ejemplo dado, el objetivo es convertir una marca de tiempo UNIX ("a1527069600") a una fecha en el formato "dd/MM/aaaa hh:mm:ss a". Sin embargo, usar SimpleDateFormatter.format seguido de SimpleDateFormatter.parse produce un resultado diferente.
Causa de la discrepancia
La discrepancia se produce porque SimpleDateFormatter.parse espera una cadena exactamente formato especificado durante la creación de instancias ("dd/MM/aaaa hh:mm:ss a"). En este caso, SimpleDateFormatter.format genera la fecha en un formato diferente al formato de entrada esperado, lo que provoca que la operación de análisis falle.
Solución
Para evitar este problema , se recomienda no pasar cadenas de fecha a bases de datos MySQL. En su lugar, utilice objetos de fecha. La moderna API de fecha y hora de Java, java.time, proporciona clases como LocalDateTime que facilitan el manejo de fechas.
Ejemplo:
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.toString()); // Output: 2018-05-23T15:30
PreparedStatement ps = myDatabaseConnection.prepareStatement(
"insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);
Este código convierte la marca de tiempo UNIX en un LocalDateTime, que se puede insertar directamente en la base de datos MySQL.
Conclusión:
Al utilizar java.time y pasar objetos de fecha en lugar de cadenas a MySQL, puede eliminar problemas de formato y garantizar la precisión de la conversión de fechas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3