Programação, diversão e arte. Por Ricardo Giaviti
Verificando finais de semana em Java
Pessoal,
Seguem dois métodos simples que utiliza a API Calendar do JAVA para detectar os finais de semana de um determinado mês. Os dias dos mês que são finais de semana são colocados em uma List e retornados pelo método. Já me quebrou muitos galhos esses métodos.
Lembrando que em Calendar, o mês 01 (janeiro) começa com o valor 0.
O código abaixo está dividido em dois métodos. Há o isFinaDeSemana() que a partir de um dia, mês e ano, te devolve se é ou não um final de semana. O outro método getFinaisDeSemanaMes() te devolve uma list com todos os dias que são finais de semana em um mês.
private List getFinaisDeSemanaMes(int ano, int mes) { Calendar calendar = new GregorianCalendar(ano, mes - 1, 1); int diasMaximos = calendar.getMaximum(Calendar.DAY_OF_MONTH); int dia = 1; List finaisDeSemana = new ArrayList(); for (dia = 1; dia <= diasMaximos; dia++) { try { if (isFinalDeSemana(ano, mes, dia)) { finaisDeSemana.add(new Long(dia)); } } catch (Exception ex) { ex.printStackTrace(); continue; } } return finaisDeSemana; } private boolean isFinalDeSemana(int ano, int mes, int dia) throws Exception { if ((mes < 1) || (mes > 12)) { throw new Exception("Mês inválido"); } boolean finalDeSemana; mes = mes - 1; Calendar data = new GregorianCalendar(); data.set(ano, mes, 1); int diaMaximo = data.getActualMaximum(Calendar.DAY_OF_MONTH); if (diaMaximo < dia) { throw new Exception("Dia inválido"); } data.set(ano, mes, dia); int diaDaSemana = data.get(Calendar.DAY_OF_WEEK); if ((diaDaSemana == Calendar.SATURDAY) || (diaDaSemana == Calendar.SUNDAY)) { finalDeSemana = true; } else { finalDeSemana = false; } return finalDeSemana; }
| Print article | This entry was posted by RicardoSEP on 08/09/2009 at 4:25 pm, and is filed under Java. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |






