我怎么知道一个月的最后一天?

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

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

397176 次浏览

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

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);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);

我不懂c#,但是,如果没有一个方便的API方法来获得它,其中一种方法是遵循以下逻辑:

today -> +1 month -> set day of month to 1 -> -1 day

当然,前提是你有这种类型的约会数学。

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

DateTime.DaysInMonth(1980, 08);

如果你想要日期,给定一个月和一年,这似乎是正确的:

public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}

你可以通过下面的代码找到任何月份的最后一天:

var now = DateTime.Now;
var startOfMonth = new DateTime(now.Year, now.Month, 1);
var DaysInMonth = DateTime.DaysInMonth(now.Year, now.Month);
var lastDay = new DateTime(now.Year, now.Month, DaysInMonth);

你可以通过一行代码找到这个月的最后一天:

int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;

DateTimePicker:

第一次约会:

DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);

最后的日期:

DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));

要获得特定日历中一个月的最后一天-并在扩展方法中-:

public static int DaysInMonthBy(this DateTime src, Calendar calendar)
{
var year = calendar.GetYear(src);                   // year of src in your calendar
var month = calendar.GetMonth(src);                 // month of src in your calendar
var lastDay = calendar.GetDaysInMonth(year, month); // days in month means last day of that month in your calendar
return lastDay;
}
// Use any date you want, for the purpose of this example we use 1980-08-03.
var myDate = new DateTime(1980,8,3);
var lastDayOfMonth = new DateTime(myDate.Year, myDate.Month, DateTime.DaysInMonth(myDate.Year, myDate.Month));

这个公式反映了@RHSeeger的想法,作为一个简单的解决方案,以获得(在这个例子中)第3个月的最后一天(单元格A1 + 4中的日期月份,该月的第一天减去1天):

=DATE(YEAR(A1);MONTH(A1)+4;1)-1

非常精确,包括闰年的二月。

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

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

例如2021年5月7日

DateTime.Now.Day;

结果:5

DateTime.Now.AddMonths (+ 1) .AddDays (-DateTime.Now.Day) .ToString(“yyyy-MM-dd");

结果:2021/07/31

另一种获取结束日期的方法:

    private static DateTime GetMonthEndDate(DateTime date)
{
DateTime endDate = date;
int endDateMonth = endDate.Month;


while (endDateMonth == endDate.Month)
endDate = endDate.AddDays(1);


endDate = endDate.AddDays(-1);


return endDate;
}

您可以按以下方式扩展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();

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

if (DateTime.UtcNow.AddDays(1).Day != 1)
{
// Tomorrow is not the first...
return;
}