none
calcular qual é o mês anterior ao mes corrente, ou um ano anterior ao corrente RRS feed

  • Pergunta

  • Bom dia,

    tenho uma procedure que precisa de um período como parametro para sua execução. Eu tentei pegar a data atual e diminuir 30 dias para pegar o mes anterior, mas dá erro, dizendo que nao posso aplicar o operador ' - '  entre o tipo system.date e o tipo int.

    Alguém sabe como eu posso fazer isso?

    Por exemplo:

    hoje são 17 de maio, então eu quero pegar o ultimo dia do mes anterior (30/04/2011) e o primeiro do mes anterior a um ano atras (01/04/2010)

    como eu faço isso?

    o codigo que deu errado é esse:

    proc.ExecutarProcedure(strproc, txtPdv.Text, ((System.DateTime.Today)-30).ToString(), "30/04/2011");
    

     

    Muito obrigado

    terça-feira, 17 de maio de 2011 14:17

Respostas

Todas as Respostas

  • Joao,

    Segue o código de como você deve fazer:

       DateTime data = DateTime.Today;
    
       // pega o mês anterior...
       data = data.AddMonths(-1);
       // pega o ultimo dia do mês...
       data = new DateTime(data.Year, data.Month, DateTime.DaysInMonth(data.Year, data.Month));
       // pega o ano anterior...
       data = data.AddYears(-1);
    
       MessageBox.Show(data.ToString());
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Sugerido como Resposta Priscila Mayumi Sato terça-feira, 17 de maio de 2011 14:46
    • Marcado como Resposta joaoluizbt terça-feira, 17 de maio de 2011 14:57
    terça-feira, 17 de maio de 2011 14:24
  • muito obrigado, cara, matou meu problema.

    eu sabia que existiam recursos prontos para calculo com datas no c#, ter que fazer tudo na "unha" é brabo.

    o codigo ficou assim:

            DateTime datafim = DateTime.Today;
            DateTime datainicio = datafim;
    
            // pega o mês anterior...
            datafim = datafim.AddMonths(-1);
            // pega o ultimo dia do mês...
            datafim = new DateTime(datafim.Year, datafim.Month, DateTime.DaysInMonth(datafim.Year, datafim.Month));
    
            //pega o primeiro dia do mes anterior
            datainicio = new DateTime(datafim.Year, datafim.Month, 1);
            // pega o ano anterior...
            datainicio = datainicio.AddYears(-1);     
    
    valew
    terça-feira, 17 de maio de 2011 14:59