如何在C#中获得本月的最后一天?

Gal*_*ali 161 c#

如何在C#中找到该月的最后一天?

Yog*_*esh 346

另一种方式:

DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(today.Year, 
                                   today.Month, 
                                   DateTime.DaysInMonth(today.Year, 
                                                        today.Month));
Run Code Online (Sandbox Code Playgroud)

  • 我即将建议System.Globalization.CultureInfo.CurrentCulture.Calendar.GetDaysInMonth.GetDaysInMonth,但这更短. (8认同)

Set*_*eth 63

就像是:

DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(today.Year, today.Month, 1).AddMonths(1).AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

也就是说,你得到下个月的第一天,然后减去一天.框架代码将处理月份长度,闰年等事情.

  • 嗯..如果在你的代码中的许多地方重复使用它,可以在dateTime类上将它写为一个Extension方法,你可以在DateTime.Now上调用它.对于前者 DateTime.Now.LastDayOfMonth(); (10认同)
  • 我最喜欢这个应用程序。然而我注意到最后一天并没有真正结束,而是凌晨 12 点。我这样做了 DateTime endOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(1).AddSeconds(-1); 返回“9/30/2020 11:59:59 PM”而不是“9/30/2020 12:00:00 AM” (2认同)

Mar*_*inC 10

public static class DateTimeExtensions
{
    public static DateTime LastDayOfMonth(this DateTime date)
    {
        return date.AddDays(1-(date.Day)).AddMonths(1).AddDays(-1);
    }
}
Run Code Online (Sandbox Code Playgroud)


Har*_*ris 5

DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)
Run Code Online (Sandbox Code Playgroud)