2011-01-11 15 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 – leppie

+8

Humm ..あなたのコードの多くの場所で繰り返し使用されている場合は、DateTime.Nowで呼び出すことができるdateTimeクラスの拡張メソッドとしてこれを書いてください。例えば、 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'(http://msdn.microsoft.com/library/xhz1w05e.aspx#remarksToggle)に解析することができるように 'string'を構築することは、現在のカルチャの日付フォーマットに非効率的で依存しています。他の3歳の回答によって提供されるよりクリーンなソリューションがあります。 – 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) 
関連する問題