Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/06/2008, 10:39
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
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!