Come posso trovare l'ultimo giorno del mese in C #?
Ad esempio, se ho la data del 03/08/1980, come posso ottenere l'ultimo giorno del mese 8 (in questo caso 31)?
Come posso trovare l'ultimo giorno del mese in C #?
Ad esempio, se ho la data del 03/08/1980, come posso ottenere l'ultimo giorno del mese 8 (in questo caso 31)?
Risposte:
L'ultimo giorno del mese ottieni così, che restituisce 31:
DateTime.DaysInMonth(1980, 08);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
da lastDayOfMonth
. Onestamente in entrambi i casi funziona perfettamente. È un argomento pedante in che modo è meglio. L'ho fatto in entrambi i modi ed entrambi danno la stessa risposta.
Se vuoi la data , dato un mese e un anno, questo sembra giusto:
public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}
Sottrai un giorno dal primo del prossimo mese:
DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month+1,1).AddDays(-1);
Inoltre, nel caso in cui ne abbiate bisogno per funzionare anche a dicembre:
DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month,1).AddMonths(1).AddDays(-1);
Puoi trovare l'ultimo giorno del mese con una singola riga di codice:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
DateTime.DaysInMonth
perché qualcuno dovrebbe cercare questo modo illeggibile e complesso per raggiungerlo !? - Ma come soluzione valida è accettabile;).
A partire dal DateTimePicker:
Primo appuntamento:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Ultimo appuntamento:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
Per ottenere l'ultimo giorno di un mese in un calendario specifico e in un metodo di estensione:
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);
(restituisce il 29)
Non conosco C # ma, se si scopre che non esiste un modo API conveniente per ottenerlo, uno dei modi per farlo è seguire la logica:
today -> +1 month -> set day of month to 1 -> -1 day
Naturalmente, ciò presuppone che tu abbia una matematica di data di quel tipo.