繁体   English   中英

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

[英]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 KindDateTime 你应该考虑你真正想要的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM