none
dia do mês e da semana RRS feed

  • Pergunta

  • pessoal, preciso de uma ajuda..

    terei um procedimento em que o usuário vai informar o mês, e depois os dias da semana que ele faz uma determinada tarefa.. então quero gerar uma tabela onde terá de verificar todos os dias daquele mês que corresponde a uma segunda por exemplo, e minha tabela será exibida com a data em número.. alguém pode me auxiliar com isso?

    sexta-feira, 7 de outubro de 2011 18:26

Respostas

  • eu achei na net uma função que pega a quantidade de dias do mês, e apartir dai eu desenvolvi a lógica conforme eu precisava.. segue pra quem precisar..

     

                    int qtdDias= DateTime.DaysInMonth(DateTime.Now.Year, mes);
                    int cont = 1;
                    while (cont <= qtdDias)
                    {
                        DateTime time = Convert.ToDateTime(cont + "/" + 10 + "/" + DateTime.Now.Year);
                        string dia = time.ToString("dddd", cultura);
                        if (dia == "segunda-feira")
                        {
                           
                        }
                        cont++;
                    }

    • Marcado como Resposta kngipa sexta-feira, 7 de outubro de 2011 19:19
    sexta-feira, 7 de outubro de 2011 19:19
  • Kyrla,

    Criei um método que busca todos os dias da semana para um determinado mês e ano. Acredito ser mais eficiente que a função que vc postou, pois não faz parse de todos os dias do mês...

    Ela parte do dia 1/mes/ano e vai de 1 em 1 até encontrar o dia da semana especificado. Daí, ela vai pulando de 7 em 7 dias e para quando a data sair do mês especificado.

    Fiz o retorno em uma lista, mas vc pode modificar como achar melhor.

    static List<DateTime> ObterDatas(int ano, int mes, DayOfWeek diaDaSemana)
    {
        List<DateTime> datas = new List<DateTime>();
        DateTime dt = new DateTime(ano, mes, 1);
        while (dt.Month == mes)
        {
            if (dt.DayOfWeek == diaDaSemana)
            {
                datas.Add(dt);
                dt = dt.AddDays(7);
            }
            else
            {
                dt = dt.AddDays(1);
            }
        }
        return datas;
    }
    


    Espero que ajude!

    Abs!

    • Marcado como Resposta kngipa sexta-feira, 7 de outubro de 2011 19:40
    sexta-feira, 7 de outubro de 2011 19:27

Todas as Respostas

  • Kyrla,

    Dê uma olhada nesse link e veja se te ajuda:

    http://msdn.microsoft.com/en-us/library/system.datetime.dayofweek.aspx

    Abraço,


    Carlos Eduardo Ferreira
    sexta-feira, 7 de outubro de 2011 18:56
  • eu achei na net uma função que pega a quantidade de dias do mês, e apartir dai eu desenvolvi a lógica conforme eu precisava.. segue pra quem precisar..

     

                    int qtdDias= DateTime.DaysInMonth(DateTime.Now.Year, mes);
                    int cont = 1;
                    while (cont <= qtdDias)
                    {
                        DateTime time = Convert.ToDateTime(cont + "/" + 10 + "/" + DateTime.Now.Year);
                        string dia = time.ToString("dddd", cultura);
                        if (dia == "segunda-feira")
                        {
                           
                        }
                        cont++;
                    }

    • Marcado como Resposta kngipa sexta-feira, 7 de outubro de 2011 19:19
    sexta-feira, 7 de outubro de 2011 19:19
  • Kyrla,

    Criei um método que busca todos os dias da semana para um determinado mês e ano. Acredito ser mais eficiente que a função que vc postou, pois não faz parse de todos os dias do mês...

    Ela parte do dia 1/mes/ano e vai de 1 em 1 até encontrar o dia da semana especificado. Daí, ela vai pulando de 7 em 7 dias e para quando a data sair do mês especificado.

    Fiz o retorno em uma lista, mas vc pode modificar como achar melhor.

    static List<DateTime> ObterDatas(int ano, int mes, DayOfWeek diaDaSemana)
    {
        List<DateTime> datas = new List<DateTime>();
        DateTime dt = new DateTime(ano, mes, 1);
        while (dt.Month == mes)
        {
            if (dt.DayOfWeek == diaDaSemana)
            {
                datas.Add(dt);
                dt = dt.AddDays(7);
            }
            else
            {
                dt = dt.AddDays(1);
            }
        }
        return datas;
    }
    


    Espero que ajude!

    Abs!

    • Marcado como Resposta kngipa sexta-feira, 7 de outubro de 2011 19:40
    sexta-feira, 7 de outubro de 2011 19:27
  • adaptei seu código.. de fato é mais eficiente..
    sexta-feira, 7 de outubro de 2011 19:40