Como descobrir o primeiro e o último dia do mês em C#

Criar uma data em C# com o primeiro dia do mês é simples, mas muita gente tem dúvida na hora de criar uma data com o último dia do mês, pois depende do mês. Logo pensam em toda uma lógica, com Switch-case, etc. Mas em C# isso é bem fácil. Vejamos …

Se você tem uma data e deseja criar uma outra data para o primeiro dia do mês, basta criar um novo DateTime com o dia 1 usando o mês e o ano da primeira data. Veja no código abaixo.

Já pra criar um DateTime com o último dia do mês em C# temos que saber quantos dias tem no mês, para isso existe um método estático da struct DateTime que resolve esse problema.

public static int DaysInMonth(int year, int month);

Perceba que este método recebe o ano e mês como parâmetros e retorna a quantidade de dias daquele mês.

Considerando a mesma variável data do código anterior, o código abaixo mostra como criar o DateTime com o último dia do mês corrente.

Essa é uma dica rápida do { Dicas de Programação }. Se ficou com dúvida, pode perguntar nos comentários aí em baixo.

Como descobrir o primeiro e o último dia do mês em C#
3.4 (68%) 10 votos
  • Carlos Silva

    Em ruby
    Date.today.beginning_of_month
    Date.today.end_of_month

    Não estou comparando as linguagens, só dizendo que os caras poderiam facilitar.

    • Legal Carlos!

      Ruby tem mesmo muitas coisas que ajudam demais na hora de desenvolver.

      Pode ficar tranquilo, o objetivo aqui não é mesmo comparar linguagens.

      Obrigado pelo comentário.

  • Bom dia !! E como faço para descobrir o primeiro e ultimo dia do mes usando o programa SLQ??

  • DECLARE @GETDATE DATETIME;

    SET @GETDATE = GETDATE();

    SELECT CAST(‘2) PRIMEIRO DIA DO MÊS’ AS VARCHAR(50)), DATEADD(MM, DATEDIFF(MM, 0, @GETDATE), 0)

    UNION

    SELECT CAST(‘7) ÚLTIMO DIA DO MÊS’ AS VARCHAR(50)), DATEADD(MS ,-3 ,DATEADD(MM, DATEDIFF(MM, 0, @GETDATE) + 1, 0))

  • val

    Oi eu estou com uma dificuldade em c# vou mostrsr um trecho do codigo do projeto que estou desenvolvendo para o tcc: é um erro que esta dando em varios trechos do codigo

    private void Form1_Load(object sender, EventArgs e)
    {
    int qt, vl, total;
    qt = Convert.ToInt16(textBox1.Text);
    vl = Convert.ToInt16(textBox2);
    total = Convert.ToInt16(textBox3);

    total = qt * vl;
    }

    A cadeia de caracteres de entrada não estava em um formato incorreto

    ja tentei descobrir mas nao consigo o que ele quer dizer

    • Bom, não sei as linhas que acontecem o erro, mas olhando eu já vejo que conversão do textBox2 e textBox3 para inteiro é errada, pois estas variáveis provavelmente apontam para um objeto (TextBox) e não para uma String, que é o resultado da propriedade Text desses dois objetos. O correto seria: Convert.ToInt16(textBox2.Text);

  • Jairo da Fonseca

    Gustavo É possivel eu programar em Visual Studio ou VB usando o C# usando todas suas dicas?