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.MinValue
o 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 aMinValue
alguna parte?Respuestas:
Ese error generalmente ocurre cuando intenta restar un intervalo
DateTime.MinValue
o 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 aMinValue
alguna parte?fuente
fuente
Tu puedes hacer:
fuente
Puedes usar el siguiente código:
fuente
El
dateTime.AddDays(-1)
no resta ese día de ladateTime
referencia. 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