JSP (Java Server Page) - Problemas en Java con los datos tipo Date

 
Vista:

Problemas en Java con los datos tipo Date

Publicado por Celia (6 intervenciones) el 14/02/2007 17:23:10
Buenas. Escribo de nuevo mi correo, ignorad el anterior con el mismo título. Tengo un problema en un Servlet con los datos de tipo Date. Resulta que yo leo una serie de datos de una página JSP, y uno de ellos es una fecha (que yo introduzco como dd/mm/yyyy), y la tengo que guardar en la bbdd de esa misma forma, como tipo Date (la BBDD está en Oracle). En el Servlet de java, yo hago lo siguiente:

String pfecha = request.getParameter("fecha");
java.text.SimpleDateFormat sd = new java.text.SimpleDateFormat("dd/MM/yyyy",
new Locale("es","ES"));
java.util.Date nuevaFecha = sd.parse(pfecha);

Después de eso, si por ejemplo yo había introducido en pantalla 20/11/2006,
el valor de nuevaFecha es Mon Nov 20 00:00:00 CET 2006,
por qué me asigna la fecha con ese formato?? si yo le he indicado el formato "dd/mm/yyyy" !!

Si alguien me puede ayudar.... muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas en Java con los datos tipo Date

Publicado por Gonzalo (72 intervenciones) el 14/02/2007 17:43:44
Cuando haces el parse con ese patrón, creas un objeto Date. Internamente Date se guarda completo (con fecha y hora y zona horaria y demás). Si luego guardas eso en la base de datos como DATE, al sacarlo tendrás de nuevo una fecha completa (probablemente incluso lo sacas de nueov a un Date, no?).

Ahora bien... el punto clave es cuando lo sacas por pantalla, que básicamente será hacer un .toString() de tu objeto Date. El Date#toString(9 te saca la fecha en ese formato. Si sólo quieres día mes y año, usa getDate, getMonth, get Year... http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html

O mejor aún, usa Calendar que es más adecuado (Date está en su mayoría Depreciado): http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas en Java con los datos tipo Date

Publicado por Celia (6 intervenciones) el 15/02/2007 15:20:10
Hola Gonzalo. El problema que tengo es que después de hacer lo que te dije (el código que puse en el mensaje anterior), cuando llamo al servlet donde hago la inserción del registro con todos los datos, me da error, porque me lee la fecha como si fuera un String (con el formato largo de día, hora, mes...). Es decir, la query del insert, por ejemplo, seria esta:
query = "INSERT INTO TABLA_X (fecha) values ( obj.getFecha() )

Es decir, p ej:
query = "INSERT INTO TABLA_X (fecha) values (Wed Jan 10 00:00:00 CET 2007)

y claro, ese valor me lo lee como String (y eso que getFecha devuelve Date), quisiera saber alguna forma de convertirlo a fecha, para que lo lea bien.

En cuanto a la clase Calendar, lo estoy mirando, pero no se cómo funciona, no sé como crear las fechas usando esa clase.

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas en Java con los datos tipo Date

Publicado por Gonzalo (72 intervenciones) el 15/02/2007 20:22:10
¿Cómo está definida la columna en la base de datos?

Si está como DATE, y tienes la fecha recibida en un String fecha, puedes usar algo como...
query = "INSERT .... VALUES (to_date(" + fecha + ", 'DD/MM/YYYY'))"
No necesitas pasarlo a un objeto Date.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas en Java con los datos tipo Date

Publicado por Celia (6 intervenciones) el 16/02/2007 12:38:04
Gracias, Gonzalo, ya he conseguido insertar los registros poniendo la función to_date en la sentencia SQL. Pero resulta que yo recibo por ejemplo, la fecha
'18/08/07', y al insertar el registro, en la tabla me aparece esa fecha, pero lee mal el año, y lo interpreta como 0007,es decir, en la tabla tengo lo siguiente:
18-ago-0007 12:00:00 AM.
Si en vez de recibir la fecha '18/08/07', recibiera '18/08/2007', insertaría bien los datos, pero es que tengo que recibir la fecha de la otra forma (es un poco largo de explicar). Hay alguna forma de convertir ese formato a formato Largo (YYYY)??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas en Java con los datos tipo Date

Publicado por Gonzalo (72 intervenciones) el 16/02/2007 16:28:25
Puedes ponerle el formato a to_date como dd/MM/YY. Es más sencillo que andar transformándolo tú.

De todos modos, no es muy aconsejable eso de recibir sólo 2 dígitos para el año, ya sabes, efecto 2000 y todas esas cosas tan malísimas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar