Jak mogę znaleźć ostatni dzień miesiąca w C #?
Na przykład, jeśli mam datę 03/08/1980, jak uzyskać ostatni dzień miesiąca 8 (w tym przypadku 31)?
Jak mogę znaleźć ostatni dzień miesiąca w C #?
Na przykład, jeśli mam datę 03/08/1980, jak uzyskać ostatni dzień miesiąca 8 (w tym przypadku 31)?
Odpowiedzi:
Ostatni dzień miesiąca wygląda następująco: 31
DateTime.DaysInMonth(1980, 08);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
z lastDayOfMonth
. Szczerze mówiąc, oba sposoby działają idealnie dobrze. To pedantyczny argument, który sposób jest lepszy. Zrobiłem to na dwa sposoby i oba dają tę samą odpowiedź.
Ostatni dzień miesiąca możesz znaleźć w jednym wierszu kodu:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
DateTime.DaysInMonth
dlaczego ktoś powinien szukać tego nieczytelnego i złożonego sposobu na osiągnięcie tego celu !? - Ale jako prawidłowe rozwiązanie jest do przyjęcia;).
Od DateTimePicker:
Pierwsza randka:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Ostatnia randka:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
Aby uzyskać ostatni dzień miesiąca w określonym kalendarzu - i w metodzie rozszerzenia -:
public static int DaysInMonthBy(this DateTime src, Calendar calendar)
{
var year = calendar.GetYear(src); // year of src in your calendar
var month = calendar.GetMonth(src); // month of src in your calendar
var lastDay = calendar.GetDaysInMonth(year, month); // days in month means last day of that month in your calendar
return lastDay;
}
// Use any date you want, for the purpose of this example we use 1980-08-03.
var myDate = new DateTime(1980,8,3);
var lastDayOfMonth = new DateTime(myDate.Year, myDate.Month, DateTime.DaysInMonth(myDate.Year, myDate.Month));
var myDate = new DateTime(1980, 1, 31);
(zwraca 29)
Nie znam C #, ale jeśli okaże się, że nie ma wygodnego sposobu na uzyskanie API, jednym ze sposobów możesz to zrobić, postępując zgodnie z logiką:
today -> +1 month -> set day of month to 1 -> -1 day
Oczywiście zakłada to, że masz matematykę tego typu.