Obtendo o número de dias em um mês

135

Eu tenho uma caixa de combinação com todos os meses.

O que eu preciso saber é o número de dias no mês escolhido.

var month = cmbMonth.SelectedIndex + 1;
DateTime date = Convert.ToDateTime(month);

Portanto, se um usuário seleciona janeiro, preciso salvar 31 em uma variável.

Dharman
fonte

Respostas:

297

Você quer DateTime.DaysInMonth:

int days = DateTime.DaysInMonth(year, month);

Obviamente, varia de acordo com o ano, já que às vezes fevereiro tem 28 dias e às vezes 29. Você sempre pode escolher um ano em particular (pulado ou não) se quiser "corrigi-lo" para um valor ou outro.

Jon Skeet
fonte
30

Use System.DateTime.DaysInMonth , do exemplo de código:

const int July = 7;
const int Feb = 2;

// daysInJuly gets 31.
int daysInJuly = System.DateTime.DaysInMonth(2001, July);

// daysInFeb gets 28 because the year 1998 was not a leap year.
int daysInFeb = System.DateTime.DaysInMonth(1998, Feb);

// daysInFebLeap gets 29 because the year 1996 was a leap year.
int daysInFebLeap = System.DateTime.DaysInMonth(1996, Feb);
Petrus Theron
fonte
3

Para localizar o número de dias em um mês, a classe DateTime fornece um método "DaysInMonth (int year, int month)". Este método retorna o número total de dias em um mês especificado.

public int TotalNumberOfDaysInMonth(int year, int month)
    {
        return DateTime.DaysInMonth(year, month);
    }

OU

int days = DateTime.DaysInMonth(2018,05);

Saída: - 31

Meenakshi Rana
fonte
0
 int days = DateTime.DaysInMonth(int year,int month);

ou

 int days=System.Globalization.CultureInfo.CurrentCulture.Calendar.GetDaysInMonth(int year,int month);

você deve passar o ano e o mês, intpois os dias do mês serão retornados em relação ao ano e mês

Salim Darjaan
fonte
0

Fiz o cálculo de dias no mês a partir do datetimepicker selecionado mês e ano, mas o código no datetimepicker1 mudou para retornar o resultado em uma caixa de texto com esse código

private void DateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    int s = System.DateTime.DaysInMonth(DateTimePicker1.Value.Date.Year, DateTimePicker1.Value.Date.Month);

    TextBox1.Text = s.ToString();
} 
hady
fonte
0
  int month = Convert.ToInt32(ddlMonth.SelectedValue);/*Store month Value From page*/
  int year = Convert.ToInt32(txtYear.Value);/*Store Year Value From page*/
  int days = System.DateTime.DaysInMonth(year, month); /*this will store no. of days for month, year that we store*/
JIYAUL MUSTAPHA
fonte
-4
  • int days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);


se você quiser encontrar dias neste ano e no mês atual, então é melhor

Bilal Ch
fonte