[英]How to turn DateTime to last day of the month?
如果我有一个DateTime
,例如2012-05-24
,那么将它转换为该月最后一天的最快捷方式是什么( 2012-05-31
)。
那么你可以使用:
DateTime date = ...;
var endOfMonth = new DateTime(date.Year, date.Month,
DateTime.DaysInMonth(date.Year, date.Month));
请注意,这将创建一个具有Unspecified
Kind
的DateTime
。 你应该考虑你真正想要的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);
}
}
请注意,在我的情况下,我将它们用于SQL查询,所以我希望它能够达到该月最后一天的最后一秒。
基于评论,是的,如果您只想要日期而不是时间,您可以使用:
public static DateTime EndOfMonth(this DateTime date)
{
return date.StartOfMonth().AddMonths(1).AddDays(-1);
}
或者只使用结果的Date
属性来获取日期部分,然后根据您使用它的方式满足这两种情况。
试试这个
DateTime dt = DateTime.Parse("2012-05-24");
DateTime lastDate = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));
试试这个
DateTime date = new DateTime(2012, 05, 24);
DateTime endOfMonth = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));
输出: 5/31/2012 12:00:00 AM
然后,您可以将其修改为所需的格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.