Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 05-jun-2008, 18:07   #1 (permalink)
aniMAYtions ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 26
problema al convertir string en date

Hola amig@s:
estoy intentando convertir un String que me iega desde un TextField a Date para luego insertarlo en la base de datos y lo he probado todo, desde el SimpleDateFormat hasta una función que se supone que lo convierte, pero aunque le pida el formato 'yyyy-MM-dd' , por ejemplo si le doy la fecha 2008-12-11, me devuelve Thu Dec 11 00:00:00 CET 2008. Os enseño un poco el código a ver si podeis decirme qué hago mal...
Código:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
fechagasto = tffchgasto.getText();
Date fecha;
try
            {
                fecha = sdf.parse(fechagasto);
                //System.out.println("La fecha es"+fecha);
            }
            catch(Exception e)
            {
                JOptionPane.showMessageDialog(rootPane, "Fallo al convertir la fecha" + e);
            }
Luego la función es la siguiente:
Código:
public Date StrtoDate(String pformat, String pdatestr)
    {        Date date = null;        
             SimpleDateFormat df = new SimpleDateFormat(pformat);        
             try 
             {
                 date = df.parse(pdatestr);        
             } 
             catch (ParseException e) 
             {            
                 e.printStackTrace();
             }
             return date;
Se supone que ambos métodos deberian devolverme la cadena que le paso en una fecha válida, pero no hay forma...
Mil gracias!!
aniMAYtions está desconectado   Responder Citando
Antiguo 06-jun-2008, 04:57   #2 (permalink)
sanmi69 está en el buen camino
 
Fecha de Ingreso: septiembre-2004
Mensajes: 187
Respuesta: problema al convertir string en date

no entiendo tu pregunta:
2008-12-11 es igual a Thu Dec 11 00:00:00 CET 2008.
Q problema hay con la fecha?? que el toString() de la clase Date no se ve como tu quieres???
sanmi69 está desconectado   Responder Citando
Antiguo 06-jun-2008, 10:39   #3 (permalink)
Isdiar no se puede cailificar en este momento
 
Avatar de Isdiar
 
Fecha de Ingreso: junio-2008
Ubicación: Sevilla, España
Mensajes: 80
Respuesta: problema al convertir string en date

Te recomiendo que te crees una clase Fecha y crees los métodos ahí.
Creo que esto te serviría (ya le añades tú los métodos restantes que te interesen):
Cita:
// Fecha.java

package utilidades;


import java.text.SimpleDateFormat;
import java.util.Date;

public class Fecha
{
private int dia;
private int mes;
private int anno;



public Fecha()
{
dia=0;
mes=0;
anno=0;
}


public Fecha(int dia, int mes, int anno)
{
if(verificar(dia,mes,anno)) {
this.dia=dia;
this.mes=mes;
this.anno=anno;
}
else {
dia=0;
mes=0;
anno=0;
}
}


public Fecha(String cadena)
{
if(!setFecha(cadena)) {
dia=0;
mes=0;
anno=0;
}
}


private boolean verificar(int dia, int mes, int anno)
{
if(mes<=0 || mes >12)
return false;
if(dia<=0 || dia>31)
return false;
if( (mes==4 || mes==6 || mes==9 || mes==11) && dia>30)
return(false);
if(mes==2 && dia>29)
return(false);
if(mes==2 && dia==29 && !bisiesto(anno))
return(false);

return(true);
}


private boolean bisiesto(int anno)
{
if(((anno % 4)==0)&&(!((anno%100)==0)||(anno%400)==0))
return(true);
return(false);
}


public String getString()
{
return(dia + "/" + mes + "/" + anno);
}


public String getStringAnnoMesDia()
{
return(anno+ "/"+ mes + "/" + dia);
}


public String getStringFormatoLargo()
{
return (this.diaSemanal(this.getIntDiaSemana())+","+Integ er.toString(dia)+"de"+this.getStringMes()+"de"+Int eger.toString(anno));
}


public boolean setFecha(String cadena)
{
int dia, mes, anno;
int indice1, indice2;
String cadena1="";
String cadena2="";
String cadena3="";
cadena=cadena.replace('-',' ');
cadena=cadena.replace('/',' ');
indice1=cadena.indexOf(' ');
if(indice1==-1)
return false;
cadena1=cadena.substring(0,indice1);
cadena1=cadena1.trim();
indice2=cadena.lastIndexOf(' ');
if(indice1==indice2)
return false;
cadena2=cadena.substring(indice1+1, indice2);
cadena2=cadena2.trim();
if(indice2+1==cadena.length())
return false;
cadena3=cadena.substring(indice2+1,cadena.length() );
cadena3=cadena3.trim();
mes=Integer.parseInt(cadena2);
if((Integer.parseInt(cadena1)>31 || Integer.parseInt(cadena1)<=0) && Integer.parseInt(cadena3)<=31 && Integer.parseInt(cadena3)>0){ //formato año-mes-dia, o incorrecto
anno=Integer.parseInt(cadena1);
dia=Integer.parseInt(cadena3);
}
else { //formato dia/mes/año, o incorrecto
anno=Integer.parseInt(cadena3);
dia=Integer.parseInt(cadena1);
}
if(verificar(dia, mes, anno)) {
this.dia=dia;
this.mes=mes;
this.anno=anno;
return(true);
}
else
return(false);
}




Dime qué te parece esta solución, si te viene bien o no... Salu2!
Isdiar está desconectado   Responder Citando
Antiguo 07-jun-2008, 14:23   #4 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.488
Respuesta: problema al convertir string en date

Cita:
Iniciado por Isdiar Ver Mensaje
Te recomiendo que te crees una clase Fecha y crees los métodos ahí...
Si Java ya lo tiene hecho, ¿para que hacerlo de nuevo?

Como dice sanmi69, la traduccion de la fecha es correcta, asi que... ¿cual es el problema?

S!
__________________
TAANSTAFL - Para obtener respuestas inteligentes, lo mejor es empezar por preguntar de forma inteligente.
GreenEyed está desconectado   Responder Citando
Antiguo 07-jun-2008, 14:44   #5 (permalink)
aniMAYtions ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 26
Respuesta: problema al convertir string en date

GreenEyed, perdona si no me he explicado bien...
A ver, io recibo la fecha como una cadena desde un textfield y la cosa es que me gustaría convertirla a un tipo de dato fecha en formato 'yyyy-mm-dd' para luego poder insertarla en una base de datos y trabajar desde ahí con fechas, entonces el formato texto que me devuelve no es lo que busco sino, si en el textfield pongo 2008-06-05 quiero que al convertirlo a Date me devuelva lo mismo, 2008-06-05.
Gracias!!
aniMAYtions está desconectado   Responder Citando
Antiguo 08-jun-2008, 16:54   #6 (permalink)
magneto ha deshabilitado el karma
 
Fecha de Ingreso: junio-2008
Mensajes: 7
Respuesta: problema al convertir string en date

Me suena.

Yo también tuve ese problema, te cuento como lo he solucionado ;)

Código:
     /**
     * Convierte la fecha java a un string para insertarlo en la tabla mysql
     * @param fecha Fecha en java
     * @return String convertido.
     */
    private String fecha_sql (GregorianCalendar fecha){
        String fechasql = fecha.get(Calendar.YEAR) + "-" + fecha.get(Calendar.MONTH) + "-" + fecha.get(Calendar.DAY_OF_MONTH);
        return fechasql;
    }
Si usas el calendar en la aplicación podrás mostrar el calendario (que te evita tener que validar la fecha) y con esta simple funcion tienes la fecha como a mysql le gusta.

Espero que te sirva ;)

Un saludo
magneto está desconectado   Responder Citando
Antiguo 08-jun-2008, 17:07   #7 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.488
Respuesta: problema al convertir string en date

Si lo vas a insertar en la BDD como fecha, no necesitas convertirlo a String, lo que necesitas es pasarle el parametro como una fecha. Usando un PreparedStatement, por ejemplo. Asi te ahorras problemas de formatos etc. y ya se encarga el driver JDBC de todo.

Igualmente, para formatear una fecha de vuelta a String, si empezaste con un String no le veo el sentido pero bueno..., lo mas flexible es usar SimpleDateFormat.

S!
__________________
TAANSTAFL - Para obtener respuestas inteligentes, lo mejor es empezar por preguntar de forma inteligente.
GreenEyed está desconectado   Responder Citando
Antiguo 08-jun-2008, 17:27   #8 (permalink)
djagu_26 ha deshabilitado el karma
 
Avatar de djagu_26
 
Fecha de Ingreso: enero-2008
Mensajes: 380
Enviar un mensaje por MSN a djagu_26
Respuesta: problema al convertir string en date

para poder insertarlo en la bd en mysql le tienes q pasar en la sql uno q sea de tipo java.sql.Date porq si le pasas un java.util.Date no te funciona
saludos
__________________
"La magia no existe, la programacion si"

Solo hay 10 clases de personas: las que entienden los numeros binarios y las que no.
djagu_26 está desconectado   Responder Citando
Antiguo 10-jun-2008, 13:41   #9 (permalink)
aniMAYtions ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 26
Respuesta: problema al convertir string en date

Muchas gracias chic@s, al final lo he solucionado de otra forma. Por recomendación de mis profesores he cambiado la base de datos a sql server y trabajo desde ahí mejor.
Cuando tenga tiempo probaré lo que me habeis dicho con mysql. Gracias!!
aniMAYtions está desconectado   Responder Citando
Antiguo 11-jun-2008, 02:07   #10 (permalink)
sanmi69 está en el buen camino
 
Fecha de Ingreso: septiembre-2004
Mensajes: 187
Respuesta: problema al convertir string en date

Cita:
Iniciado por Isdiar Ver Mensaje
Te recomiendo que te crees una clase Fecha y crees los métodos ahí.
Creo que esto te serviría (ya le añades tú los métodos restantes que te interesen):






Dime qué te parece esta solución, si te viene bien o no... Salu2!
eso es reinventar la rueda.....
sanmi69 está desconectado   Responder Citando
Antiguo 11-jun-2008, 02:08   #11 (permalink)
sanmi69 está en el buen camino
 
Fecha de Ingreso: septiembre-2004
Mensajes: 187
Respuesta: problema al convertir string en date

Cita:
Iniciado por aniMAYtions Ver Mensaje
GreenEyed, perdona si no me he explicado bien...
A ver, io recibo la fecha como una cadena desde un textfield y la cosa es que me gustaría convertirla a un tipo de dato fecha en formato 'yyyy-mm-dd' para luego poder insertarla en una base de datos y trabajar desde ahí con fechas, entonces el formato texto que me devuelve no es lo que busco sino, si en el textfield pongo 2008-06-05 quiero que al convertirlo a Date me devuelva lo mismo, 2008-06-05.
Gracias!!
para usar fechas en base de datos usa campos de tipo fecha. Usar campos string en la base de datos para las fechas es una warrada, y no es util, porq no puedes operar con ellas.
sanmi69 está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:38.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93