Normalmente utilizo el siguiente código, pero ¿hay una manera mejor?Último día del mes en .NET
lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
Normalmente utilizo el siguiente código, pero ¿hay una manera mejor?Último día del mes en .NET
lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
utilizo
DateTime now = DateTime.Today;
var lastDate = new DateTime(now.Year, now.Month, DateTime.DaysInMonth(now.Year, now.Month));
DateTime(year, month, DateTime.DaysInMonth(year, month)).
Usted puede utilizar CultureInfo.CurrentCulture.Calendar.GetDaysInMonth (Now.Year, Now.Month)
utilizaría probablemente DaysInMonth
ya que hace el código es un poco más legible y más fácil de entender (aunque, realmente me gusta tu truco :-)). Este requieres un ammount similar de mecanografía (que es bastante), así que probablemente sería definir un método de extensión:
DateTime LastDayOfMonth(this DateTime) {
var days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
return new DateTime(DateTime.Now.Year, DateTime.Now.Month, days);
}
Ahora podemos usar DateTime.Now.LastDayOfMonth()
la que se ve mucho mejor :-).
Aquí es cómo se puede obtener el número de días del mes usando Noda Time:
int days = CalendarSystem.Iso.GetDaysInMonth(year, month);
Bastante simple, ¿verdad? Bueno, eso supone que sabes el año y el mes sobre el que preguntas. Si usted lo desea para el actual al mes, y en la zona hora del sistema , entonces usted tiene que especificar que de forma explícita, como esto:
DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();
LocalDate localDate = SystemClock.Instance.Now.InZone(tz).Date;
int days = localDate.Calendar.GetDaysInMonth(localDate.Year, localDate.Month);
Noda El tiempo hace intencionadamente se piensa en estas cosas, en lugar de simplemente haciendo las suposiciones que hacen DateTime.Now
o DateTime.Today
.
Definir "mejor". –
Creo que solo una función proporcionada por la API haría un mejor trabajo. –
¿Quieres un tiempo específico? Si no, debes usar Today, not Now. –