2011-01-28 27 views
69

Ho una casella combinata con tutti i mesi in essa contenuti.Numero di giorni in un mese

Quello che devo sapere è il numero di giorni nel mese scelto.

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

Quindi, se un utente seleziona gennaio ho bisogno di risparmiare da 31 a una variabile. Grazie.

risposta

170

Volete DateTime.DaysInMonth:

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

Ovviamente varia per anno, come a volte Febbraio ha 28 giorni e, a volte 29. Si può sempre scegliere un particolare anno (salto o meno) se si vuole "fissare" a un valore o altro.

23

Usa System.DateTime.DaysInMonth, dal codice di esempio:

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); 
-3
  • int days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);


se si vuole trovare giorni in questo anno e mese attuale allora questo è meglio

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

o

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

devi passare anno e il mese come int quindi giorni nell'ultimo mese saranno di ritorno a currespoting anno e il mese

0

ho fatto calcolare giorni nell'ultimo mese da datetimepicker mese e anno selezionato, ed io, ma il codice DateTimePicker1 TextChanged per restituire il risultato in una casella di testo con questo codice

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(); 
} 
Problemi correlati