semana - primer dia de una fecha c#
¿Cómo llego el último día de un mes? (11)
¿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)?
Desde 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));
El último día del mes obtienes así, que devuelve 31:
DateTime.DaysInMonth(1980, 08);
No sé C # pero, si resulta que no hay una forma de API conveniente para obtenerla, 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 datos matemáticos de ese tipo.
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;
}
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;
Puede encontrar la última fecha de cualquier mes por este código:
var now = DateTime.Now;
var startOfMonth = new DateTime(now.Year, now.Month, 1);
var DaysInMonth = DateTime.DaysInMonth(now.Year, now.Month);
var lastDay = new DateTime(now.Year, now.Month, DaysInMonth);
Resta un día del primero del próximo mes:
DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month+1,1).AddDays(-1);
Además, en caso de que lo necesites para trabajar en diciembre también:
DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month,1).AddMonths(1).AddDays(-1);
Si quieres la fecha , dada 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));
}
// 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));
DateTime firstOfNextMonth = new DateTime(date.Year, date.Month, 1).AddMonths(1);
DateTime lastOfThisMonth = firstOfNextMonth.AddDays(-1);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);