Logo

Foro sobre los Ciclos Formativos de Grado Medio ( SMR ) y Superior ( ASIR, DAI, DAM y DAW ).

Convertir String a Date

Foro sobre el módulo > Programación en lenguajes estructurados.

Convertir String a Date

Notapor Zynan el 27 Mar 2011, 19:16

Hola que tal, tengo un pequeño problema, necesito convertir una fecha introducida como int (dia, mes, año) y convertirlas a Date para despues compararlas. Las he convertido previamente a String para juntar los datos por separado en uno e intento convertirlo, sin embargo el programa me da el error: "Exception in thread "main" java.lang.IllegalArgumentException"

Os dejo el código que he escrito para que me orinenteis un poco:

int dia=27, mes=03, año=2011;
String fecha=String.valueOf(dia)+String.valueOf(mes)+String.valueOf(año);
Date fechaM=new Date (fecha);
SimpleDateFormat formatoDeFecha=new SimpleDateFormat ("dd/MM/yyyy");
String fechaF=formatoDeFecha.format(fechaM);

System.out.println ("Fecha: "+fechaF);

Muchas gracias.
Avatar de Usuario
Zynan
Usuario FP
Usuario FP
 
Mensajes: 28
Registrado: 10 Nov 2010, 13:16
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Toledo
Instituto: Juan Bosco

Re: Convertir String a Date

Notapor newboy el 27 Mar 2011, 21:48

El primer error es tu formato de la String "fecha", fíjate que el SimpleDateFormat usa un formato con el día, mes y año junto a unas barras que no incluyes en tu fecha declarada.

Luego puedes intentar parsear el tipo de dato (String a Date):

Código: Seleccionar todo
        try {
            int dia = 27, mes = 03, año = 2011;
            String fecha = dia + "/" + mes + "/" + año;
            SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");
            Date fechaP = formatoDeFecha.parse(fecha);
            String fechaF=formatoDeFecha.format(fechaP);
            System.out.println("Fecha: " + fechaF);
        } catch (ParseException ex) {
            System.out.println("Error de conversión");
        }


Salu2.
Avatar de Usuario
newboy
Admin & Webmaster
Admin & Webmaster
 
Mensajes: 2069
Registrado: 20 Jul 2008, 16:12
Ubicación: 127.0.0.1
Ciclo Formativo: No estudio FP
Curso: Ninguno

Re: Convertir String a Date

Notapor Zynan el 28 Mar 2011, 18:46

Hola gracias por la contestación, ya entiendo lo que me comentas, sin embargo no me sirve, el error en mi programa no es ese; no me interesa convertir el dato a String, me interesa convetir una entrada de tres números (dia, mes año) como int a forma Date, así puedo utilizar los métodos after y before, sin embargo los datos que me devuelve el programa no se parecen en nada a los que le introduzco por teclado. El código que he escrito es éste:

public void imprimirEntreFechas (int diaEntrada, int mesEntrada, int añoEntrada, int diaSalida, int mesSalida, int añoSalida) {


Date fechaEntrada=new Date (diaEntrada, mesEntrada, añoEntrada); //Fecha de entrada del visitante
Date fechaSalida=new Date (diaSalida, mesSalida, añoSalida); //Fecha de salida de éste

System.out.println ("Fecha entrada= "+fechaEntrada); //Compruebo el formato de las fechas
System.out.println ("Fecha entrada= "+fechaEntrada);

if(tamano!=0) { //Si el tamaño de la lista enlazada es distinto de 0 la lista no está vacío
Nodo temp = primero ; // Nodo temp será un dato de tipo nodo auxiliar
String str = "" ; //La variable str será donde almacene los datos a imprimir
for(int i =0; i<this.tamano; i++) { //Inicio del bucle para buscar los datos en la lista
if (estaEntreLasFechas (temp.dato.getFecha_entrada(), fechaEntrada, fechaSalida)) {
//Condicional para comprobar que hay datos entre las fechas introducidas, si el metodo estaEntreFechas es true
str = str + temp.dato.getInformacion() + "\n" ;
//Si hay datos entre los valores introducidos se almacenan en la variable str
temp = temp.siguiente ; //temp es igual al siguiente nodo
}
}
System.out.println(str); //Imprimimos la variable str con todos los datos encontrados
}
}


//Inicio del metodo que valida que los datos estan entre las fechas introducidas
private boolean estaEntreLasFechas (Date fecha, Date fechaEntrada, Date fechaSalida) {

if (fecha.before(fechaSalida) && fecha.after(fechaEntrada)) {
//Si la fecha de salida es posterior a la fecha del nodo y anterior a la fecha de salida del nodo
return true; //Devuelve true
}

return false; //Si no devuelve false
}

Lo cierto que es como fechas de entrada y salida para comprobar el método introduzco dos fechas fijas:

Fecha de entrada: 1, 1, 2010
Fecha de salida: 1, 4, 2010

Pero en vez de estas fechas me devuelve:

Fecha entrada= Fri Aug 03 00:00:00 CET 1906
Fecha entrada= Fri Aug 03 00:00:00 CET 1906

¿Por qué me cambia los datos? Por más que lo miro no veo el motivo.

Muchas gracias y un saludo.
Avatar de Usuario
Zynan
Usuario FP
Usuario FP
 
Mensajes: 28
Registrado: 10 Nov 2010, 13:16
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Toledo
Instituto: Juan Bosco

Re: Convertir String a Date

Notapor Davidbn el 28 Mar 2011, 19:15

Yo de java ni papa, nunca lo he visto... pero al introducir las feches le tienes que estar dando un mal formato. Estas seguro que metiendo 2010 funcionaria? Es decir, al menos en C en linux los meses estan del 0 al 11 (0 enero y 11 Diciembre), y los años los asimila con un numero a partir del 1900, con lo que para obtener o introducir una fecha tenías que sumarle o restarle al año 1900.

No sé, es sólo una suposición. Como ya te he dicho, yo de java ni papa XD.
Avatar de Usuario
Davidbn
Visitante
Visitante
 
Mensajes: 10
Registrado: 27 Mar 2011, 16:42
Ciclo Formativo: ASI / ASIR
Curso:
Acceso por: Bachiller
Provincia: Caceres
Instituto: I.E.S. Agora


Volver a PLE

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados