2011-01-11 47 views
131

Ayın son gününü C# içinde nasıl bulabilirim? gibiAyın son günü C# nasıl alabilirim?

+0

DateTime.DaysInMonth (1980, 08); Lütfen bu makaleye göz atın http://stackoverflow.com/questions/2493032/how-to-get-the-last-day-of-a-month –

cevap

284

bunu yapmanın bir başka yolu:

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

System.Globalization.CultureInfo.CurrentCulture.Calendar.GetDaysInMonth.GetDaysInMonth önermek üzereydim ama bu daha kısa oldu. – hultqvist

57

şey:

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

sonraki ayın ilk günü, daha sonra günde çıkarma olsun yani. Çerçeve kodu ayın uzunluğunu, yıllarca ve benzeri şeyleri ele alacaktır.

+1

Tam olarak ne yazmak istedim, ama birisinin yeneceğini düşündüm bana bunun için :) +1 – leppie

+8

Humm .. Kodunuzda birçok yerde tekrar tekrar kullanılırsa, DateTime.Now'da çağırabileceğiniz dateTime sınıfında bir Extension yöntemi olarak yazın. Örn. DateTime.Now.LastDayOfMonth(); –

-7

bu deneyin. Problemini çözecek.

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

Bir "string" oluşturmak [böylece bir DateTime '(http://msdn.microsoft.com/library/xhz1w05e.aspx#remarksToggle)' a dönüştürebilirsiniz, böylece mevcut kültürün tarih biçimlendirmesinde verimsiz ve bağımlıdır. Diğer üç yaşındaki cevapların sağladığı temiz çözümler var. – BACON

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

Bu, korunacak tarihin zaman bölümüne ihtiyacınız olduğunda harika bir çözümdür. Diğer çözümler bunu yapmaz. Amacı daha net hale getirmek için "AddDays (1- (date.Day))" i "AddDays (-date.Day + 1)" e yeniden yazmayı öneririm. – humbads

3
DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) 
İlgili konular