Ajuda para contar os domingos dos meses

3 respostas
N

Boa noite pessoal,

Sou novo por aqui e em java também.

Estou desenvolvendo um programa de cálculo salarial e nele preciso saber quantos domingos um determinado mês tem, pois vou somar os domingos de um mês com os feriados desse mês para fazer o cálculo de dsr/h.e (Descanso Semanal Remunerado/Hora Extra).

Então, basicamente o algoritmo seria assim:

1 - Passar MES  (Exemplo: Strings Janeiro, Fevereiro,Março, etc);

2 - Retornar a quantidade de domingos desse mês (Exemplo: 3, 4, etc);

3 - Somar os domingos com os feriados do mês (4 + 1) e farei o cálculo de dsr/h.e. que  tenho pronto.

Já sei que pra isso vou utilizar a:
Import java.util.*;

Conto com a colaboração de vocês e desde já agradeço.

3 Respostas

davidbuzatto

Não costumo dar soluções prontas, mas veja só.

/**
 * Conta a quantidade de domingos de um mês.
 * 
 * @param mes Mês desejado (1 janeiro, 2 fevereiro, ..., 12 dezembro)
 * @param ano Ano desejado
 * @return Quantidade de domingos
 */
public static int quantDomingos( int mes, int ano ) {

    int quantDomingos = 0;

    // cria um calendário na data 01/mes/ano
    Calendar c = new GregorianCalendar( ano, mes - 1, 1 );

    do {

        // o dia da semana é domingo?
        if ( c.get( Calendar.DAY_OF_WEEK ) == Calendar.SUNDAY ) {
            quantDomingos++;
        }

        // incrementa um dia no calendário
        c.roll( Calendar.DAY_OF_MONTH, true );

        // enquanto o dia do mês atual for diferente de 1
    } while ( c.get( Calendar.DAY_OF_MONTH ) != 1 );

    return quantDomingos;

}

O método acima retornará a quantidade de domingos de um mês de um ano.
Em relação aos feriados fica complicado, pois alguns feriados não tem dias fixos no calendário, mas seguem regras para serem "calculados".

[]'s

N

:smiley:

Muito obrigado davidbuzatto.

O seu código me ajudou muito.

Como em cada cidade os feriados são diferentes, pedirei ao usuário do programa que conte somente os feriados que não caem em domingo.

Sua contribuição foi fundamental para a entrega deste programa no prazo ao cliente.

Um grande abraço.

davidbuzatto

Disponha.

[]'s

Criado 30 de outubro de 2011
Ultima resposta 31 de out. de 2011
Respostas 3
Participantes 2