2011-01-11 4 views

답변

284

그 일을하는 또 다른 방법 :

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를 제안하려고했으나이 방법이 더 짧았습니다. – hultqvist

57

뭔가 :

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

당신이 다음 달 1 일이 후 하루 뺄 수 있다고하는 것입니다. 프레임 워크 코드는 월 길이, 윤년 등을 처리합니다.

+1

정확하게 쓰고 싶었지만 누군가가 이길 것이라고 생각했습니다. 나에게 :) +1 – leppie

+8

Humm .. 코드에서 여러 곳에서 반복적으로 사용되는 경우 DateTime.Now에서 호출 할 수있는 dateTime 클래스의 Extension 메서드로이 코드를 작성합니다. 예를 들어. DateTime.Now.LastDayOfMonth(); –

-7

이 시도. 그것은 당신의 문제를 해결할 것입니다.

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

''DateTime'으로 구문 분석 할 수 있도록'string'을 만들면 (http://msdn.microsoft.com/library/xhz1w05e.aspx#remarksToggle) 현재 문화권의 날짜 형식에 비효율적이며 의존적입니다. 다른 세 살짜리 해답에 의해 제공되는 청결한 솔루션이 있습니다. – BACON

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

날짜 보존 기간이 필요할 때 유용한 솔루션입니다. 다른 해결책은 그렇게하지 않습니다. "AddDays (1- (date.Day))"를 "AddDays (-date.Day + 1)"로 다시 작성하여 의도를 명확하게 작성하는 것이 좋습니다. – humbads

3
DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) 
관련 문제