Normalmente utilizzo il codice seguente, ma esiste un modo migliore?Ultimo giorno del mese in. NET
lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
Normalmente utilizzo il codice seguente, ma esiste un modo migliore?Ultimo giorno del mese in. NET
lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
Io uso
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)).
È possibile utilizzare CultureInfo.CurrentCulture.Calendar.GetDaysInMonth (Now.Year, Now.Month)
avrei probabilmente usare DaysInMonth
quanto rende il codice un po 'più leggibile e più facile da capire (anche se mi piace molto il tuo trucco :-)). Questo requieres una simile quantità degli tipizzazione (che è un bel po '), così ho probabilmente definire un metodo di estensione:
DateTime LastDayOfMonth(this DateTime) {
var days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
return new DateTime(DateTime.Now.Year, DateTime.Now.Month, days);
}
Ora possiamo usare DateTime.Now.LastDayOfMonth()
che sembra molto meglio :-).
Ecco come è possibile ottenere il numero di giorni del mese con Noda Time:
int days = CalendarSystem.Iso.GetDaysInMonth(year, month);
Abbastanza semplice, eh? Beh, questo presuppone che tu sappia l'anno e il mese che stai chiedendo. Se si desidera per la corrente mesi , e in il fuso orario del sistema , poi si deve specificare che in modo esplicito, in questo modo:
DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();
LocalDate localDate = SystemClock.Instance.Now.InZone(tz).Date;
int days = localDate.Calendar.GetDaysInMonth(localDate.Year, localDate.Month);
Noda Tempo fa intenzionalmente si pensa a queste cose, invece di facendo solo le supposizioni che fanno DateTime.Now
o DateTime.Today
.
Definire "migliore". –
Penso che solo una funzione fornita dall'API farebbe un lavoro migliore. –
Vuoi un orario specifico? Se no, dovresti usare oggi, non ora. –