introduzco dia/mes/año y quiero que me devuelva el día...

Skeku
05 de Diciembre del 2003
Tengo una vaga idea....creo que tengo q tomar como referencia un día (por ejemplo el 1/1/2001 que fue lunes) y de acuerdo con esta fecha sumar o restar años,meses, etc etc y luego aplicar un mod 7 para que me devuelva un entero y poder decir si es cero es lunes, si es 1 martes, etc etc....

pero realmente no sé bien como se hace...hay alguien que pueda echarme un cable con ello? Gracias por adelantado...

He visto otros mensajes parecidos pero creo que no me servían de ayuda.

heihachi
05 de Diciembre del 2003
Más fácil usar la clase GregorianCalendar:

/**Trovar dia de la setmana*/
public static int diaDeLaSetmana(String data) {
try{
String patron = "dd/MM/yyyy";
SimpleDateFormat format = new SimpleDateFormat(patron);
Date date = format.parse(data);
GregorianCalendar grCal=new GregorianCalendar();
grCal.setTime(date);
int dia=grCal.get(Calendar.DAY_OF_WEEK);
return dia;
}catch(java.text.ParseException e){
return -1;//error
}
}

Funciona bien.
Ahora mismo no recuerdo si lunes=0, martes=1,...
o lunes=1, martes=2,...

Esta función no se entera si la fecha introducida és correcta (32/01/2003). Para eso, una vez obtenido el Date date:

String aux=format.format(date);
if (!aux.equals(data)) {
//fecha incorrecta
}else{
//fecha correcta
}

Saludos!

Skeku
05 de Diciembre del 2003
Muchas gracias por la info...sabía que había alguna manera más fácil y hela aquí. Gracias de nuevo.

No obstamte, cómo sería de la manera en que lo expliqué yo más o menos?

heihachi
05 de Diciembre del 2003
Para calcular los días que hay entre dos fechas (tipo Date):
/**d2 > d1*/
public static long diasEntre(Date d1, Date d2){
final long ONE_HOUR=60 * 60 * 1000L;
return ((d2.getTime()-d1.getTime()+ONE_HOUR)/(ONE_HOUR * 24));
}

Y como obtener los Date a partir de los Strings está en el otro post

El resto es fácil.

Saludos!