Pregunta ¿Cómo encuentras el último día del mes? [duplicar]


Posible duplicado:
¿Cómo obtener el último día de un mes? 

Hasta ahora, tengo esto:

DateTime createDate = new DateTime(year, month, 1).AddMonths(1).AddDays(-1);

¿Hay una mejor manera?


73
2017-11-02 15:03


origen


Respuestas:


¿Qué hay de usar DaysInMonth:

DateTime createDate = new DateTime (year, month,
                                    DateTime.DaysInMonth(year, month));

(Nota para mí mismo - debe hacer esto fácil en Hora de Noda...)


188
2017-11-02 15:06



Puedes usar el método DateTime.DaysInMonth(year,month) para obtener la cantidad de días en un mes dado.


20
2017-11-02 15:07



Este es un enfoque elegante que encontré en una útil biblioteca de extensiones DateTime en CodePlex:

http://datetimeextensions.codeplex.com/

Aquí hay un código de muestra:

    public static DateTime First(this DateTime current)
    {
        DateTime first = current.AddDays(1 - current.Day);
        return first;
    }

    public static DateTime First(this DateTime current, DayOfWeek dayOfWeek)
    {
        DateTime first = current.First();

        if (first.DayOfWeek != dayOfWeek)
        {
            first = first.Next(dayOfWeek);
        }

        return first;
    }

    public static DateTime Last(this DateTime current)
    {
        int daysInMonth = DateTime.DaysInMonth(current.Year, current.Month);

        DateTime last = current.First().AddDays(daysInMonth - 1);
        return last;
    }

También tiene algunas otras extensiones útiles que pueden ser útiles para usted.


5
2017-11-02 15:51



si está interesado en una versión de código personalizada:

var anyDt = DateTime.Now;
var lastDayOfMonth = anyDt.AddMonths(1).AddDays(anyDt.AddMonths(1).Day).Date;

o:

var anyDt = DateTime.Now;
var lastDayOfMonth = anyDt.AddDays(1-anyDt.Day).AddMonths(1).AddDays(-1).Date; 

o como un método:

DateTime LastDayInMonth(DateTime anyDt)
   { return anyDt.AddMonths(1).AddDays(anyDt.AddMonths(1).Day).Date; }

o como un método de extensión:

DateTime LastDayInMonth(DateTime this anyDt)
   { return anyDt.AddMonths(1).AddDays(anyDt.AddMonths(1).Day).Date; }

1
2017-11-02 15:07