¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo Convertir una Cadena de Fecha en Java.sql.Date con el Formato Correcto

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 419 Vistas
0
Cargando...

Hola Expertos,

Estoy recibiendo una fecha en forma de cadena 2007-06-30 de R/3. ¿Cómo puedo convertir esta cadena en una fecha en el formato 30/06/2007? Tengo que usar java.sql.Date.

El siguiente código no está funcionando. Para ejecutar el siguiente código, tengo que usar java.util.Date. No puedo usar java.util.Date ya que el programa Web Dynpro utiliza java.sql.Date.

	SimpleDateFormat sdf1 = new SimpleDateFormat("dd/mm/yyyy");
	Date d = null;
	d = sdf1.parse(wdContext.currentContextElement().getDateClicked());

Saludos,

Gary

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Hola,

Olvidé tu solicitud original, los diferentes formatos de fecha pueden lograrse utilizando solo dos SimpleDateFormats de esta manera:

String ds1 = "2007-06-30";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
String ds2 = sdf2.format(sdf1.parse(ds1));
System.out.println(ds2); //será 30/06/2007

Saludos cordiales,

Fabian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Si entendí bien, ¿necesitas esta fecha escrita como java.sql.Date?

String ds=wdContext.currentContextElement().getDateClicked();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");	
java.sql.Date sd = new java.sql.Date(sdf.parse(ds).getTime());

Cuatro observaciones:

"Transportamos" la fecha de java.util.Date a java.sql.Date como milisegundos desde el 1 de enero de 1970, 00:00:00 GMT. Consulta el contrato de java.sql.Date.

Utilizaste dd/mm/yyyy en lugar de dd/MM/yyyy, pero mm son los minutos y no los meses, consulta el contrato de [SimpleDateFormat|http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html] (JSE 1.4).

No estableces la zona horaria para DateFormat, por lo que utilizas TimeZone.getDefault(). Esta es la zona horaria predeterminada de tu JVM y depende (si no la has cambiado) de la zona horaria de tu sistema. Por ejemplo, yo vivo en Alemania, la zona horaria de mi sistema es actualmente MEZ (que es UTC+1) ya que dejamos la zona horaria de horario de verano el último domingo. Dado que solo analizas la fecha y no la zona horaria, esperas que la fecha (la cadena) esté en tu zona horaria predeterminada. Si no es así, debes establecer la zona horaria en la que esperas que esté la fecha (por ejemplo, sdf1.setTimeZone(TimeZone.getTimeZone("UTC"));) antes de analizar la fecha. Esto puede parecer insignificante en tu caso, pero puede producir resultados inesperados con comparaciones de fechas y análisis de fechas alrededor del cambio de día.

¡SimpleDateFormat no es seguro para subprocesos, así que no lo caches! Esto no se menciona en la documentación de JSE 1.4, pero se puede consultar en la [base de datos de errores de Sun|http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=96669461418011fffffffffb70dd6b6e88eb5?bug_id=4264153]. Si no estás satisfecho con el manejo estándar de fecha y hora (por ejemplo, por razones de rendimiento), es posible que desees considerar una alternativa como [Joda Time|http://joda-time.sourceforge.net/index.html], que se publica bajo la licencia [ASF 2.0|http://joda-time.sourceforge.net/license.html].

Saludos cordiales,

Fabian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Cuando desees analizar una fecha usando SimpleDateFormat, proporciona el formato en el que la fecha será introducida en el SDF. En tu caso, crea una instancia de SimpleDateFormat para yyyy-mm-dd. Esto debería funcionar.

Gracias,

Venkat

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?