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

Calcular el número de semana dentro de un mes [Solucionado]

Estas en el tema de Calcular el número de semana dentro de un mes [Solucionado] en el foro de Java en Foros del Web. Hola. Estoy intentando calcular el número de semana dentro de un mes (entre 1 y 5) a partir de una fecha dada. Por ejemplo para ...
  #1 (permalink)  
Antiguo 24/11/2011, 11:42
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 185
Antigüedad: 12 años, 7 meses
Puntos: 29
Calcular el número de semana dentro de un mes [Solucionado]

Hola. Estoy intentando calcular el número de semana dentro de un mes (entre 1 y 5) a partir de una fecha dada. Por ejemplo para el 1-11-2011 debería de devolver 1 (primera semana dentro del mes de noviembre de 2011).

Utilizo la clase Calendar, concretamente la constante WEEK_OF_MONTH. El problema está en que me devuelve valores incorrectos. Ejemplo:


1) Calendar c = Calendar.getInstance();
c.set(2011, 10, 7); //Mes 10 = noviembre, y el día es 6
c.get(Calendar.WEEK_OF_MONTH)

Resultado = 2. Correcto, es la segunda semana en el mes de noviembre.

2) Calendar c = Calendar.getInstance();
c.set(2011, 0, 3); //Mes 0 = enero, y el día es el 3
c.get(Calendar.WEEK_OF_MONTH)

Resultado = 1. Incorrecto, ya que el día 3 está en la segunda semana. De hecho si pregunto por el 1 de enero de 2001 me devuelve que el número de semana es 0.

He probado cambiando el primer día de la semana: c.setFirstDayOfWeek(Calendar.MONDAY), pero el resultado es el mismo.

Alguna idea?

Un saludo.

Última edición por jav_000; 24/11/2011 a las 12:34 Razón: Solución encontrada
  #2 (permalink)  
Antiguo 24/11/2011, 12:35
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 185
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Calcular el número de semana dentro de un mes [Solucionado]

Encontré la solución. Resulta que por defecto para que considere una semana como válida tiene que tener al menos 4 días. Si nos fijamos en noviembre, esto se cumple, pero en enero de 2011 sólo hay 2 días en la primera semana, por lo que no la cuenta como semana de enero (semana=0). Si modificamos éste parámetro con mínimo=1, ya funcinona bien:

c.setMinimalDaysInFirstWeek(1);

Etiquetas: semana, calculadora
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 07:20.