Як я можу знайти останній день місяця в C #?
Наприклад, якщо у мене дата 03.08.1980, як мені отримати останній день 8 місяця (в даному випадку 31)?
Як я можу знайти останній день місяця в C #?
Наприклад, якщо у мене дата 03.08.1980, як мені отримати останній день 8 місяця (в даному випадку 31)?
Відповіді:
Останній день місяця ви отримуєте такий, який повертається 31:
DateTime.DaysInMonth(1980, 08);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
з lastDayOfMonth
. Чесно кажучи, будь-який спосіб працює чудово. Це педантичний аргумент, який спосіб краще. Я робив це обома способами, і обидва дають однакову відповідь.
Якщо ви хочете дати , що дається місяць і рік, це здається правильним:
public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}
Останній день місяця ви можете знайти за одним рядком коду:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
DateTime.DaysInMonth
чому б хтось шукав цей нечитабельний і складний спосіб його досягнення !? - Але як прийнятне рішення прийнятне;).
З DateTimePicker:
Перше побачення:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Остання дата:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
Отримати останній день місяця в конкретному календарі - і в методі розширення -:
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);
(повертається 29-го)