es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Decremento de la transición del mes de la fecha.

Tengo una función para restar un día a una fecha cada vez que se llama.

private IEnumerable<datetime> EachDay(DateTime from, DateTime thru)
{
    for (var day = thru.Date; day.Date >= from.Date; day = day.Subtract(TimeSpan.FromDays(1)))//day.AddDays(-1))
    {
        yield return day;
    }
}

Parece funcionar bien hasta que llego al mes anterior. ¿Alguien tiene una solución?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que la función no está funcionando como se espera cuando llega al mes anterior. Para solucionar este problema, puedes modificar el código para verificar si el día actual es el primer día del mes, y si es así, ajustar la resta para retroceder al último día del mes anterior. Aquí tienes una versión actualizada de la función:

    private IEnumerable<datetime> EachDay(DateTime from, DateTime thru)
    {
        for (var day = thru.Date; day.Date >= from.Date; day = day.Subtract(TimeSpan.FromDays(1)))
        {
            yield return day;
    
            if (day.Day == 1 && day != from)
            {
                // ajustar al último día del mes anterior
                var lastDayOfPrevMonth = day.Subtract(TimeSpan.FromDays(day.Day));
                day = lastDayOfPrevMonth;
            }
        }
    }
    

    Esto debería manejar el caso cuando la función llega al primer día de un mes y retrocede correctamente al último día del mes anterior.

Comments are closed.