DateTime
例如,如果我有一个2012-05-24
,那么将它转换为该月最后一天(2012-05-31
)的最快捷方式是什么.
Jon*_*eet 14
那么你可以使用:
DateTime date = ...;
var endOfMonth = new DateTime(date.Year, date.Month,
DateTime.DaysInMonth(date.Year, date.Month));
Run Code Online (Sandbox Code Playgroud)
需要注意的是,这将创建DateTime
一个Kind
的Unspecified
.你应该考虑Kind
你真正想要的东西.(或者使用我的Noda Time库,你可以使用它LocalDate
.)
这是我使用的一些扩展方法:
public static class DateTimeExtensionMethods
{
public static DateTime StartOfMonth(this DateTime date)
{
return new DateTime(date.Year, date.Month, 1);
}
public static DateTime EndOfMonth(this DateTime date)
{
return date.StartOfMonth().AddMonths(1).AddSeconds(-1);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,在我的情况下,我将它们用于 SQL 查询,因此我希望它最多可用于本月最后一天的最后一秒。
根据评论,是的,如果您只想要日期而不是时间,您可以使用:
public static DateTime EndOfMonth(this DateTime date)
{
return date.StartOfMonth().AddMonths(1).AddDays(-1);
}
Run Code Online (Sandbox Code Playgroud)
或者只是使用Date
结果的属性来获取日期部分,然后它满足两种情况,具体取决于您如何使用它。