如何在c#中找到一个月的最后一天?

例如,如果我有日期03/08/1980,我如何得到第8个月的最后一天(在本例中是31)?


当前回答

从下个月的第一天减去一天:

DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month+1,1).AddDays(-1);

此外,如果你也需要它在12月工作:

DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month,1).AddMonths(1).AddDays(-1);

其他回答

这将显示下个月的最后日期。可以从AddMonths(x)中添加或减去想要返回的月份。

DateTime.Now.AddMonths(2).AddDays(-DateTime.Now.Day)

我只想在每个月的最后一天发射代码,就是这么简单……

if (DateTime.UtcNow.AddDays(1).Day != 1)
{
    // Tomorrow is not the first...
    return;
}
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);

您可以按以下方式扩展DateTime;

public static class DateTimeMethods
{
    public static DateTime StartOfMonth(this DateTime date)
    {
        return new DateTime(date.Year, date.Month, 1, 0, 0, 0);
    }

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

像这样使用它;

DateTime today = DateTime.Now;

DateTime startOfMonth = today.StartOfMonth();
DateTime endOfMonth = today.EndOfMonth();

这个月的最后一天你会得到这样的结果,返回31:

DateTime.DaysInMonth(1980, 08);