Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > fechas

saludos amigos informáticos mi duda es si existe una forma de calcular cuantos domingos tiene un mes en especifico.

para ser mas especifico septiembre de 2016 tiene cuatro domingos y septiembre del 2017 tiene 5 domingos. como podría obtener ese dato. el ejemplo de septiembre es una simple explicación de mi duda por que en realidad necesito extraer ese dato del mes del año que sea.

Porfa lo necesito para el sistema de mi texis
GRACIAS POR SU TIEMPO

septiembre 30, 2016 | Registered Commenterleonarftcraft

La forma de hacerlo podría ser iterar a través de todos los días del mes buscado y ver si es domingo, algo así:

public class Main {
public static void main(String[] args) {
int anio = 2016;
int mes = Calendar.SEPTEMBER;

int numDomingos = 0;

Calendar cal = new GregorianCalendar(anio, mes, 1);
while (cal.get(Calendar.MONTH) == mes){
int dia = cal.get(Calendar.DAY_OF_WEEK);
if (dia == Calendar.SUNDAY) {
numDomingos++;

}
cal.add(Calendar.DAY_OF_YEAR, 1);

}
System.out.println("Numero de domingos: " + numDomingos);

}
}

AA y Septiembre de 2017 tiene solo 4 domingos... al menos en mi calendario, no se en el tuyo jeje.

Un saludo.

septiembre 30, 2016 | Registered Commenterloderain

Hola amigo:
Existe un método para jugar con las características de una fecha dada, pero que es a nivel de Base de Datos. Yo personalmente lo que utilizo es Postgres, y éste tiene la función: extract(field from interval) que tiene un montón de utilidades, le mencionaré algunas mediante ejemplos:

select extract(month from timestamp '2016-09-18')
devuelve el mes de la fecha indicada.
-------------------

select extract(week from timestamp '2016-09-18')
devuelve la semana de la fecha indicada (en este ejemplo, devolvería 37, pues '2016-09-18' cae en la semana 37 de dicho año).
-------------------
Y además, una que le interesará mucho:

select extract(dow from timestamp '2016-09-18')
Este devuelve el día de la semana para la fecha indicada, devolviendo un valor numérico entre 0 y 6 que corresponden a: 0=domingo, 1=lunes, 2=martes... 6=sábado. En el caso de este ejemplo, devolvería el valor cero, pues '2016-09-18' cae domingo.

Lo que tienes que hacer es buscar la forma de recorrer todos los días de un mes dado realizando esta consulta para cada uno de ellos, y contando todos aquellos que te den valor cero (que corresponden al domingo) . Eso es al menos en Postgres, jamás lo he probado en ningún otro sistema gestor. Bueno, esto no sé si sea la solución que usted esperaba, pero al menos es una pista que si quiere puede seguir.

Un GigaSaludo!!!

septiembre 30, 2016 | Unregistered CommenterYYanes

huy muy bien los dos formas son muy aceptables. jajja que problema se me a convertido realizar mi texis de técnico. pero con esto soluciono mi problema con las fechas

octubre 5, 2016 | Registered Commenterleonarftcraft