2011-01-11 12 views

risposta

284

Un altro modo di farlo:

DateTime today = DateTime.Today; 
DateTime endOfMonth = new DateTime(today.Year, 
            today.Month, 
            DateTime.DaysInMonth(today.Year, 
                 today.Month)); 
+6

Stavo per suggerire System.Globalization.CultureInfo.CurrentCulture.Calendar.GetDaysInMonth.GetDaysInMonth ma questo era molto più breve. – hultqvist

57

Qualcosa di simile:

DateTime today = DateTime.Today; 
DateTime endOfMonth = new DateTime(today.Year, today.Month, 1).AddMonths(1).AddDays(-1); 

vale a dire che si ottiene il primo giorno del prossimo mese, quindi sottrarre un giorno. Il codice quadro gestirà mesi, anni bisestili e cose del genere.

+1

Esattamente quello che volevo scrivere, ma pensato che qualcuno avrebbe battuto me :) +1 – leppie

+8

Humm .. se viene usato ripetutamente in molti punti del tuo codice, scrivilo come un metodo di estensione sulla classe dateTime che puoi invocare su DateTime.Ora. Per es. DateTime.Now.LastDayOfMonth(); –

-7

provare questo. Risolverà il tuo problema.

var lastDayOfMonth = DateTime.DaysInMonth(int.Parse(ddlyear.SelectedValue), int.Parse(ddlmonth.SelectedValue)); 
DateTime tLastDayMonth = Convert.ToDateTime(lastDayOfMonth.ToString() + "/" + ddlmonth.SelectedValue + "/" + ddlyear.SelectedValue); 
+3

Costruire una 'stringa' in modo da poterlo [analizzare in un' DateTime'] (http://msdn.microsoft.com/library/xhz1w05e.aspx#remarksToggle) è inefficiente e dipende dalla formattazione della data della cultura corrente. Ci sono soluzioni più pulite fornite dalle altre risposte di tre anni. – BACON

7
public static class DateTimeExtensions 
{ 
    public static DateTime LastDayOfMonth(this DateTime date) 
    { 
     return date.AddDays(1-(date.Day)).AddMonths(1).AddDays(-1); 
    } 
} 
+0

Questa è un'ottima soluzione quando è necessario conservare la parte relativa all'ora della data. Le altre soluzioni non lo fanno. Suggerisco di riscrivere "AddDays (1- (date.Day))" su "AddDays (-date.Day + 1)" per rendere l'intento più chiaro. – humbads

3
DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) 
Problemi correlati