¿Cómo puedo encontrar el último día del mes en C #?
Por ejemplo, si tengo la fecha 03/08/1980, ¿cómo obtengo el último día del mes 8 (en este caso 31)?
¿Cómo puedo encontrar el último día del mes en C #?
Por ejemplo, si tengo la fecha 03/08/1980, ¿cómo obtengo el último día del mes 8 (en este caso 31)?
Respuestas:
El último día del mes obtienes así, que devuelve 31:
DateTime.DaysInMonth(1980, 08);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
de lastDayOfMonth
. Honestamente, de cualquier manera funciona perfectamente bien. Es un argumento pedante de qué manera es mejor. Lo he hecho en ambos sentidos y ambos dan la misma respuesta.
Si desea la fecha , dado un mes y un año, esto parece correcto:
public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}
Puede encontrar el último día del mes por una sola línea de código:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
DateTime.DaysInMonth
, ¿por qué alguien debería buscar esta forma ilegible y compleja de lograrlo? - Pero como una solución válida es aceptable;).
De DateTimePicker:
Primera fecha:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Ultima cita:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
Para obtener el último día de un mes en un calendario específico y en un método de extensión:
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);
(regresa el 29)
No sé C # pero, si resulta que no hay una forma API conveniente de obtenerlo, una de las formas en que puede hacerlo es siguiendo la lógica:
today -> +1 month -> set day of month to 1 -> -1 day
Por supuesto, eso supone que tienes matemática de fechas de ese tipo.