到目前为止,我有这个:
DateTime createDate = new DateTime(year, month, 1).AddMonths(1).AddDays(-1);
有更好的方法吗?
答案 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; }