DateTime
例如,如果我有一个2012-05-24
,那么将其转换为该月最后一天的日期的最快方法是什么(2012-05-31
)。
问问题
9687 次
4 回答
18
那么你可以使用:
DateTime date = ...;
var endOfMonth = new DateTime(date.Year, date.Month,
DateTime.DaysInMonth(date.Year, date.Month));
请注意,这将创建一个DateTime
带有 aKind
的Unspecified
。你应该考虑Kind
你真正想要什么。(或者使用我的Noda Time库,您可以使用 aLocalDate
代替。)
于 2013-08-21T05:59:40.373 回答
7
这是我使用的一些扩展方法:
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
结果的属性来获取日期部分,然后根据您的使用方式满足这两种情况。
于 2013-08-21T06:00:37.033 回答
3
尝试这个
DateTime dt = DateTime.Parse("2012-05-24");
DateTime lastDate = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));
于 2013-08-21T06:05:31.977 回答
1
尝试这个
DateTime date = new DateTime(2012, 05, 24);
DateTime endOfMonth = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));
输出: 2012 年 5 月 31 日上午 12:00:00
然后,您可以将其修改为所需的格式。
于 2013-08-21T06:06:45.387 回答