Java - Calcular semanas de un mes

 
Vista:

Calcular semanas de un mes

Publicado por luis (83 intervenciones) el 16/12/2009 19:40:49
Hola me gustaría saber si alguien conoce una forma en que pueda calcular la cantidad de semanas que tiene un (me interesa saber nada mas cuantos lunes tiene). He buscado y no consigo algo que funcione bien. Febrero tiene 5 lunes como cada 15 años, enero tiene 4 lunes durante 3 años y luego 5 lunes durante 2 años. Me supongo que los demás deben tener alguna lógica también pero pienso que debe existir una manera mas sencilla de hacer esto que haciendo miles de condiciones.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calcular semanas de un mes

Publicado por Bosco Garita (9 intervenciones) el 16/12/2009 21:27:04
Esto no es exactamente lo que preguntas pero te puede ayudar.
Este programa calcula las ocurrencias de un día específico durante el mes; es decir muestra cuantos sábados tiene un mes por ejemplo.

import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;

/**
*
* @author bgarita
* 16/12/2009
*/
public class ContarOcurrenciasdeDiasEnMes {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
int mes = cal.get(Calendar.MONTH);
int diaAContar = 7;
int cuenta = 0;
String strDia = "Domingos";
switch (diaAContar) {
case 2:
strDia = "Lunes";
break;
case 3:
strDia = "Martes";
break;
case 4:
strDia = "Miércoles";
break;
case 5:
strDia = "Miércoles";
break;
case 6:
strDia = "Viernes";
break;
case 7:
strDia = "Sábados";
break;
} // end switch

while (cal.get(Calendar.MONTH) == mes){
if (cal.get(Calendar.DAY_OF_WEEK) == diaAContar)
cuenta++;
// end if
cal.add(Calendar.DAY_OF_MONTH, 1);
} // end while

JOptionPane.showMessageDialog(null, "Este mes tiene " + cuenta + " " + strDia);

} // end main

} // end class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular semanas de un mes

Publicado por luis (83 intervenciones) el 17/12/2009 02:10:12
Gracias por tu ayuda pero me parece que hay un error puesto que imprimo mes y el resultado es 11. No conozco mucho del trabajo con fechas como haría para pasarle una fecha que obtengo como un string.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular semanas de un mes

Publicado por Bosco Garita (9 intervenciones) el 17/12/2009 21:22:18
Si es correcto. En Java los meses inician en cero. Pero en el ejemplo que te envié el mes solamente se utiliza para controlar el while.

Una forma de pasarle una fecha que recibiste como un string sería separando cada parte de la fecha y luego, de la misma manera, establecer cada parte en la variable de tipo Calendar. Pero hay que recordar que los meses inician con cero (0=enero,1=febrero,etc).

Este ejemplo convierte una fecha recibida como string a fecha de tipo Calendar.

import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;

/**
*
* @author bgarita 17/12/2009
*/
public class ConvertirstringaFecha {


public static void main(String[] args) {

String fecha = "17/12/2009";
String[] aFecha = fecha.split("/");
Integer dia = Integer.parseInt(aFecha[0]);
Integer mes = Integer.parseInt(aFecha[1]);
Integer año = Integer.parseInt(aFecha[2]);
Calendar cal = new GregorianCalendar();
cal.set(Calendar.DAY_OF_MONTH, dia);
cal.set(Calendar.MONTH, mes - 1);
cal.set(Calendar.YEAR, año);
JOptionPane.showMessageDialog(null, cal.getTime());
JOptionPane.showMessageDialog(null, dia + "/" + mes + "/" + año);
} // end main
} // end class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular semanas de un mes

Publicado por Luis (83 intervenciones) el 19/12/2009 15:05:17
Gracias Bosco ya lo probe y funciona muy bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar