我怎样才能在C#中得到一个月的最后一天?

我怎样才能在C#中得到一个月的最后一天?,c#,C#,如何在C#中找到一个月的最后一天?类似于: DateTime today = DateTime.Today; DateTime endOfMonth = new DateTime(today.Year, today.Month, 1).AddMonths(1).AddDays(-1); 也就是说,你得到下个月的第一天,然后减去一天。框架代码将处理月长、闰年等问题 另一种方法: DateTime today = DateTime.Today; DateTime endOfMonth = new

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

类似于:

DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(today.Year, today.Month, 1).AddMonths(1).AddDays(-1);

也就是说,你得到下个月的第一天,然后减去一天。框架代码将处理月长、闰年等问题

另一种方法:

DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(today.Year, 
                                   today.Month, 
                                   DateTime.DaysInMonth(today.Year, 
                                                        today.Month));

试试这个。它会解决你的问题

 var lastDayOfMonth = DateTime.DaysInMonth(int.Parse(ddlyear.SelectedValue), int.Parse(ddlmonth.SelectedValue));
DateTime tLastDayMonth = Convert.ToDateTime(lastDayOfMonth.ToString() + "/" + ddlmonth.SelectedValue + "/" + ddlyear.SelectedValue);

这正是我想写的,但觉得有人会比我快:)+1哼哼。。如果它在代码中的许多地方重复使用,请将其作为dateTime类上的扩展方法编写,您可以在dateTime.Now上调用它。例如DateTime.Now.LastDayOfMonth();我最喜欢这种方式。但我注意到,它并没有真正结束最后一天,而是在凌晨12点。我改为DateTime endOfMonth=newdatetime(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”,我正要建议System.Globalization.CultureInfo.CurrentCulture.Calendar.GetDaysInMonth.GetDaysInMonth,但这要短得多。DateTime.DaysInMonth(1980,08);请参阅本文构造一个
字符串
,这样可以降低效率并依赖于当前区域性的日期格式。其他三年前的答案提供了更干净的解决方案。当您需要保留日期的时间部分时,这是一个很好的解决方案。其他的解决方案不能做到这一点。我建议将“AddDays(1-(date.Day))”改写为“AddDays(-date.Day+1)”,以使意图更加清晰。
public static class DateTimeExtensions
{
    public static DateTime LastDayOfMonth(this DateTime date)
    {
        return date.AddDays(1-(date.Day)).AddMonths(1).AddDays(-1);
    }
}
DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)