你怎么找到这个月的最后一天?

时间:2010-11-02 15:03:44

标签: c# datetime

  

可能重复:
  How to get the last day of a month?

到目前为止,我有这个:

DateTime createDate = new DateTime(year, month, 1).AddMonths(1).AddDays(-1);

有更好的方法吗?

4 个答案:

答案 0 :(得分:209)

如何使用DaysInMonth

DateTime createDate = new DateTime (year, month,
                                    DateTime.DaysInMonth(year, month));

(自我注意 - 必须在Noda Time ...)

中轻松完成

答案 1 :(得分:21)

您可以使用DateTime.DaysInMonth(year,month)方法获取任意给定月份的天数。

答案 2 :(得分:6)

这是我在CodePlex上有用的DateTime扩展库中找到的一种优雅方法:

http://datetimeextensions.codeplex.com/

以下是一些示例代码:

    public static DateTime First(this DateTime current)
    {
        DateTime first = current.AddDays(1 - current.Day);
        return first;
    }

    public static DateTime First(this DateTime current, DayOfWeek dayOfWeek)
    {
        DateTime first = current.First();

        if (first.DayOfWeek != dayOfWeek)
        {
            first = first.Next(dayOfWeek);
        }

        return first;
    }

    public static DateTime Last(this DateTime current)
    {
        int daysInMonth = DateTime.DaysInMonth(current.Year, current.Month);

        DateTime last = current.First().AddDays(daysInMonth - 1);
        return last;
    }

它还有一些其他有用的扩展,可能对您有所帮助。

答案 3 :(得分:2)

如果您对自定义代码版本感兴趣:

var anyDt = DateTime.Now;
var lastDayOfMonth = anyDt.AddMonths(1).AddDays(anyDt.AddMonths(1).Day).Date;

或:

var anyDt = DateTime.Now;
var lastDayOfMonth = anyDt.AddDays(1-anyDt.Day).AddMonths(1).AddDays(-1).Date; 

或作为方法:

DateTime LastDayInMonth(DateTime anyDt)
   { return anyDt.AddMonths(1).AddDays(anyDt.AddMonths(1).Day).Date; }

或作为扩展方法:

DateTime LastDayInMonth(DateTime this anyDt)
   { return anyDt.AddMonths(1).AddDays(anyDt.AddMonths(1).Day).Date; }