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 sustraído da como resultado un DateTime no representable.
Nombre del parámetro: valor
Nunca he visto este mensaje de error antes, y no entiendo por qué lo estoy viendo. De las respuestas que Iv'e leyó hasta ahora, creo 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.

DateTime.MinValueo desea agregarle algoDateTime.MaxValue(o intenta crear una instancia de una fecha fuera de este intervalo mínimo-máximo). ¿Estás seguro de que no estás asignando aMinValuealguna parte?Respuestas:
Ese error generalmente ocurre cuando intenta restar un intervalo
DateTime.MinValueo desea agregarle algoDateTime.MaxValue(o intenta crear una instancia de una fecha fuera de este intervalo mínimo-máximo). ¿Estás seguro de que no estás asignando aMinValuealguna parte?fuente
fuente
Tu puedes hacer:
fuente
Puedes usar el siguiente código:
fuente
El
dateTime.AddDays(-1)no resta ese día de ladateTimereferencia. Devolverá una nueva instancia, con ese día restado de la referencia original.fuente
He tenido problemas al usar AddDays (-1) .
Mi solución es TimeSpan .
fuente
El objeto (es decir, la variable de destino) para el método AddDays no puede ser el mismo que el origen.
En vez de:
Intenta esto en su lugar:
fuente
En lugar de disminuir directamente el número de días desde el objeto de fecha directamente, primero obtenga el valor de la fecha y luego reste los días. Vea el siguiente ejemplo:
Aquí, someDate es una variable de tipo DateTime.
fuente
Utilizando
AddDays(-1)funcionó para mí hasta que traté de cruzar meses. Cuando intenté restar 2 días de 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).Solía
date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");y no tengo problemas.fuente