Foros del Web » Programación para mayores de 30 ;) » Java »

funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Estas en el tema de funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas en el foro de Java en Foros del Web. Hola a todos, tengo una duda, quizas sea algo tonto y como estoy tan cansada ya ni lo veo, y quisiera ver si pueden ayudar ...
  #1 (permalink)  
Antiguo 28/02/2008, 15:04
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Hola a todos, tengo una duda, quizas sea algo tonto y como estoy tan cansada ya ni lo veo, y quisiera ver si pueden ayudar o darme ideas. Necesita saber cuantos sabados y domingos hay entre dos fechas, he creado una funcion, que es la siguiente

Código PHP:
public int get_calculovacaciones(GregorianCalendar fechainicioGregorianCalendar fechafin){
        
int dias=0;
        do{
            if((
fechainicio.DAY_OF_WEEK==5)||(fechainicio.DAY_OF_WEEK==6)){
                
dias++;
            }
            
fechainicio.roll(Calendar.DATEtrue);
        }while(!(
fechainicio.equals(fechafin)));
        if((
fechainicio.DAY_OF_WEEK==5)||(fechainicio.DAY_OF_WEEK==6)){dias++;}
        
//JOptionPane.showInputDialog(dias);
        
return dias;
    } 
pero tiene dos problemas:

1) nunca me entra en el if del day_of_week
2) nunca sale del while.

he revisado estas funciones en el api de java y ya no veo que mas error puede tener, alguna idea???

muchas gracias
  #2 (permalink)  
Antiguo 28/02/2008, 16:22
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Hola:

Yo creo que puedes hacerlo de otra forma. Cada 7 días hay un sábado y un domingo, así que bastará calcular la diferencia en días entre las dos fechas y dividir entre 7. El cociente entero de la división te da el número de sábados o domingos.

Te queda el tema del resto de la división. Ahí, en función de que día sean las fechas, puede o no haber sábados y domingos. Para eso bastaría ver el dia de la semana de la fecha inicial y ver si sumando ese resto de días pillas un sábado o domingo.

Se buena.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 02/03/2008, 13:30
 
Fecha de Ingreso: octubre-2007
Mensajes: 5
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Yo creo que puedes hacerlo de otra forma. Cada 7 días hay un sábado y un domingo, así que bastará calcular la diferencia en días entre las dos fechas y dividir entre 7. El cociente entero de la división te da el número de sábados o domingos.

Te queda el tema del resto de la división. Ahí, en función de que día sean las fechas, puede o no haber sábados y domingos. Para eso bastaría ver el dia de la semana de la fecha inicial y ver si sumando ese resto de días pillas un sábado o domingo.

Se buena.
hola fijate que como tu dijiste a mi tambien se me ocurrio pero despues de hacer la division tambien tengo problemas con el resto, esto debido a que tambien hay que recorrer y me lanzaria la misma excepcion que ahora me esta curriendo...

alguna otra idea de xq me ocurre este error???
  #4 (permalink)  
Antiguo 03/03/2008, 06:29
MK2
 
Fecha de Ingreso: enero-2007
Mensajes: 48
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Si no te entra en el if será que los parámetros de entrada a la función son incorrectos, ya que la sentencia del if parece correcta. Has probado en ver los valores de los parámetros de la función antes de entrar en el if ???

Saludos
  #5 (permalink)  
Antiguo 03/03/2008, 06:31
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Cita:
Iniciado por MK2 Ver Mensaje
Si no te entra en el if será que los parámetros de entrada a la función son incorrectos, ya que la sentencia del if parece correcta. Has probado en ver los valores de los parámetros de la función antes de entrar en el if ???

Saludos
si, ya lo he revisado, los mande imprimir con un JOptionPane y llegan correctamente y tambien adelanta los días cuando uno coloca un dia mas.... no tengo la mas minima idea de xq estos errores
  #6 (permalink)  
Antiguo 03/03/2008, 11:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Hola:

GregorianCalendar.DAY_OF_WEEK es una constante y no el número del día que es. No sé cuanto vale, pero siempre vale lo mismo, por lo que o no te entra nunca en el if, o te entra siempre. Para obtener el dia de la semana, debes usar

calendar.get(Calendar.DAY_OF_WEEK)

y debes poner eso en el if.

En cuanto al método roll(), ira sumando días, pero según pone la api, NO suma el mes al pasarse de mes. Supongo que si te pasas de mes, nunca se terminará el while, pero si ambas fechas son el mismo mes, entonces sí.

Se buena.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 04/03/2008, 07:40
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

GregorianCalendar.DAY_OF_WEEK es una constante y no el número del día que es. No sé cuanto vale, pero siempre vale lo mismo, por lo que o no te entra nunca en el if, o te entra siempre. Para obtener el dia de la semana, debes usar

calendar.get(Calendar.DAY_OF_WEEK)

y debes poner eso en el if.

En cuanto al método roll(), ira sumando días, pero según pone la api, NO suma el mes al pasarse de mes. Supongo que si te pasas de mes, nunca se terminará el while, pero si ambas fechas son el mismo mes, entonces sí.

Se buena.
Hola chuidiang, muchas gracias por tu respuesta, realmente nunca habia utilizado esta libreria y seguramente por eso he escrito las barbaridas en la funcion, dejame acomodar unas cosas al proyecto que me pidieron siguiente, y en lo que siga con el calculo de esos dias, te aviso.

Muchas gracias. muy util tu respuesta
  #8 (permalink)  
Antiguo 04/03/2008, 15:34
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

bueno, cuidiang, te comento, que coloque el if como me dijiste y gracias a dios ahora ya entra en el condicional, pero como no me realiza bien el calculo mande a imprimir las siguientes variables:

Código PHP:
public int get_calculovacaciones(GregorianCalendar fechainicioGregorianCalendar fechafin){
        
int dias=0;
        do{
            if((
fechainicio.get(Calendar.DAY_OF_WEEK)==1)||(fechainicio.get(Calendar.DAY_OF_WEEK)==7)){
                
dias++;
            }
            
fechainicio.roll(Calendar.DATEtrue);
           
// String fecha=String.valueOf(fechainicio.get(Calendar.DAY_OF_WEEK));
            
JOptionPane.showInputDialog(String.valueOf(fechainicio.get(Calendar.DAY_OF_MONTH)));
            
JOptionPane.showInputDialog(String.valueOf(fechainicio.get(Calendar.MONTH)));
            
JOptionPane.showInputDialog(String.valueOf(fechainicio.get(Calendar.DAY_OF_WEEK)));
            
JOptionPane.showInputDialog(String.valueOf(fechainicio.get(Calendar.YEAR)));
        }while(!(
fechainicio.equals(fechafin)));
        if((
fechainicio.DAY_OF_WEEK==5)||(fechainicio.DAY_OF_WEEK==6)){dias++;}
        
//JOptionPane.showInputDialog(dias);
        
return dias;
    } 
y fijate que el 3 de enero del presente año me dice que es el dia 7, y sino me equivoco eso toca a un sabado, cosa que no corresponde con el verdadero calendario. los datos que estoy enviando es asi:

Código PHP:
GregorianCalendar calendarioinicio = new GregorianCalendar(2008,01,01);
                                        
GregorianCalendar calendariofin = new GregorianCalendar(2008,01,31);
                                      
resultados.get_calculovacaciones(calendarioiniciocalendariofin); 
claro por ahora esos datos son fijos, mientras logro hacer que la funcion de verdad funcione, porque crees que me arroje incorrectamente el dia de la semana????

Gracias!!!
  #9 (permalink)  
Antiguo 05/03/2008, 08:07
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

hola a todos, siguiendo con el tema, y continuando con mi duda anterior, he estado debugueando, y quisiera saber si a alguien se le ocurre de porque mi funcion me dice que los dias sabados y domingos son los dias 3 y 4 de la semana???, eso no es autoconfigurable????

alguna idea???
  #10 (permalink)  
Antiguo 05/03/2008, 11:32
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: funcion que calcula la cantidad de dias sabados y domiengos entre dos fechas

hola a todos, ya me di cuenta del error, estaba enviando enero como mes uno y no como mes cero, un pequeño detalle, los dias de semana que me arrojada eran los correspondientes a febrero, ahora ya funciona a la perfeccion. Gracias a todos...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:49.