如何将DateTime转换为该月的最后一天?

时间:2013-08-21 05:57:56

标签: c# .net datetime

如果我有一个DateTime,例如2012-05-24,那么将它转换为该月最后一天的最快捷方式是什么(2012-05-31

4 个答案:

答案 0 :(得分:14)

你可以使用:

DateTime date = ...;
var endOfMonth = new DateTime(date.Year, date.Month, 
                              DateTime.DaysInMonth(date.Year, date.Month));

请注意,这会创建一个DateTime Kind Unspecified。你应该考虑你真正想要的Kind。 (或者使用我的Noda Time库,而使用LocalDate代替。)

答案 1 :(得分:3)

以下是我使用的一些扩展方法:

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属性来获取日期部分,然后根据您的使用方式满足这两种情况。

答案 2 :(得分:3)

试试这个

DateTime dt = DateTime.Parse("2012-05-24");            
DateTime lastDate = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));

答案 3 :(得分:1)

试试这个

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

然后,您可以将其修改为所需的格式。

相关问题