6

DateTimeたとえば、 がある場合2012-05-24、それをその月の最終日 ( 2012-05-31) である日付に変換する最も簡単な方法は何ですか。

4

4 に答える 4

18

よく使用できます:

DateTime date = ...;
var endOfMonth = new DateTime(date.Year, date.Month, 
                              DateTime.DaysInMonth(date.Year, date.Month));

の を作成することに注意してDateTimeください。本当に欲しいものは何かを考えるべきです。(または、代わりに a を使用する場合は、私のNoda Timeライブラリを使用します。)KindUnspecifiedKindLocalDate

于 2013-08-21T05:59:40.373 に答える
7

私が使用するいくつかの拡張メソッドは次のとおりです。

public static class DateTimeExtensionMethods
{
    public static DateTime StartOfMonth(this DateTime date)
    {
        return new DateTime(date.Year, date.Month, 1);
    }
    public static DateTime EndOfMonth(this DateTime date)
    {
        return date.StartOfMonth().AddMonths(1).AddSeconds(-1);
    }
}

私の場合、SQLクエリに使用しているので、月の最後の日の最後の1秒までにしたいことに注意してください。

コメントに基づいて、はい、時間ではなく日付だけが必要な場合は、次を使用できます。

    public static DateTime EndOfMonth(this DateTime date)
    {
        return date.StartOfMonth().AddMonths(1).AddDays(-1);
    }

またはDate、結果のプロパティを使用して日付部分を取得するだけで、使用方法に応じて両方のケースを満たします。

于 2013-08-21T06:00:37.033 に答える
3

これを試して

DateTime dt = DateTime.Parse("2012-05-24");            
DateTime lastDate = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));
于 2013-08-21T06:05:31.977 に答える
1

これを試して

DateTime date = new DateTime(2012, 05, 24);
DateTime endOfMonth = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));

出力: 2012 年 5 月 31 日12:00:00 AM

その後、これを必要な形式に変更できます。

于 2013-08-21T06:06:45.387 に答える