restar - sumar dias a un datetimepicker c#
Intento restar días de DateTime en C#, pero me aparece un error que no entiendo (7)
Tengo el siguiente código en mi programa C #.
DateTime dateForButton = DateTime.Now;
dateForButton = dateForButton.AddDays(-1); // ERROR: un-representable DateTime
Cada vez que lo ejecuto, aparece el siguiente error:
El valor agregado o restado da como resultado un DateTime no representable.
Nombre del parámetro: valor
Nunca antes había visto este mensaje de error, y no entiendo por qué lo estoy viendo. De las respuestas que he leído hasta ahora, me llevan a creer que puedo usar -1 en una operación de suma para restar días, pero como mi pregunta muestra, este no es el caso de lo que intento hacer.
El objeto (es decir, la variable de destino) para el método AddDays no puede ser el mismo que el de la fuente.
En lugar de:
DateTime today = DateTime.Today;
today.AddDays(-7);
Pruebe esto en su lugar:
DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);
Ese error generalmente ocurre cuando intentas restar un intervalo de DateTime.MinValue
o quieres agregar algo a DateTime.MaxValue
(o intentas instanciar una fecha fuera de este intervalo mínimo-máximo). ¿Estás seguro de que no estás asignando MinValue
algún lado?
Puedes usar el siguiente código:
dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));
Tu puedes hacer:
DateTime.Today.AddDays(-1)
Usar AddDays(-1)
funcionó para mí hasta que traté de cruzar meses. Cuando traté de restar 2 días del 2017-01-01 el resultado fue 2016-00-30. No pudo manejar el cambio de mes correctamente (aunque el año parecía estar bien).
Utilicé date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
y no tengo problemas
DateTime dt = DateTime.Now;
dt.AddDays(-1); //wont work
//should set return value as belowe
dt = dt.AddDays();
DateTime dateForButton = DateTime.Now.AddDays(-1);