Wie finde ich den letzten Tag des Monats in C #?
Wenn ich beispielsweise das Datum 03/08/1980 habe, wie erhalte ich den letzten Tag des 8. Monats (in diesem Fall 31)?
Wie finde ich den letzten Tag des Monats in C #?
Wenn ich beispielsweise das Datum 03/08/1980 habe, wie erhalte ich den letzten Tag des 8. Monats (in diesem Fall 31)?
Antworten:
Der letzte Tag des Monats, den Sie so erhalten, gibt 31 zurück:
DateTime.DaysInMonth(1980, 08);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
aus dem erstellt lastDayOfMonth
. Ehrlich gesagt funktioniert so oder so perfekt. Es ist ein pedantisches Argument, welcher Weg besser ist. Ich habe es in beide Richtungen gemacht und beide geben die gleiche Antwort.
DateTime firstOfNextMonth = new DateTime(date.Year, date.Month, 1).AddMonths(1);
DateTime lastOfThisMonth = firstOfNextMonth.AddDays(-1);
int daysInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); DateTime lastDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Sie finden den letzten Tag des Monats in einer einzigen Codezeile:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
DateTime.DaysInMonth
, warum statt einer einfachen Methode jemand nach diesem unlesbaren und komplexen Weg suchen sollte, um dies zu erreichen!? - Aber als gültige Lösung ist akzeptabel;).
Von DateTimePicker:
Erste Verabredung:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Letztes Datum:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
So erhalten Sie den letzten Tag eines Monats in einem bestimmten Kalender - und in einer Erweiterungsmethode -:
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);
(gibt den 29. zurück)
Ich kenne C # nicht, aber wenn sich herausstellt, dass es keinen bequemen API-Weg gibt, um es zu bekommen, können Sie dies folgendermaßen tun, indem Sie der Logik folgen:
today -> +1 month -> set day of month to 1 -> -1 day
Dies setzt natürlich voraus, dass Sie eine Datumsmathematik dieses Typs haben.