Eu tenho o seguinte código no meu programa c #.
DateTime dateForButton = DateTime.Now;
dateForButton = dateForButton.AddDays(-1); // ERROR: un-representable DateTime
Sempre que o executo, recebo o seguinte erro:
O valor adicionado ou subtraído resulta em um DateTime não representável.
Nome do parâmetro: value
Nunca vi essa mensagem de erro antes e não entendo por que a estou vendo. Pelas respostas que Iv'e leu até agora, sou levado a acreditar que posso usar -1 em uma operação de adição para subtrair dias, mas como minha pergunta mostra, esse não é o caso do que estou tentando fazer.
DateTime.MinValue
ou deseja adicionar algo aDateTime.MaxValue
(ou tenta instanciar uma data fora desse intervalo min-max). Tem certeza de que não está atribuindoMinValue
algum lugar?Respostas:
Esse erro geralmente ocorre quando você tenta subtrair um intervalo de
DateTime.MinValue
ou deseja adicionar algo aDateTime.MaxValue
(ou tenta instanciar uma data fora desse intervalo min-max). Tem certeza de que não está atribuindoMinValue
algum lugar?fonte
fonte
Você pode fazer:
fonte
Você pode usar o seguinte código:
fonte
O
dateTime.AddDays(-1)
não subtrai esse dia dadateTime
referência. Ele retornará uma nova instância, com isso um dia subtraído da referência original.fonte
Eu tive problemas usando AddDays (-1) .
Minha solução é TimeSpan .
fonte
O objeto (ou seja, variável de destino) para o método AddDays não pode ser o mesmo que a fonte.
Ao invés de:
Tente isso:
fonte
Em vez de diminuir diretamente o número de dias diretamente do objeto de data, primeiro obtenha o valor da data e subtraia os dias. Veja o exemplo abaixo:
Aqui, someDate é uma variável do tipo DateTime.
fonte
Usar
AddDays(-1)
funcionou para mim até que tentei atravessar meses. Quando tentei subtrair 2 dias de 01-01-2017, o resultado foi 2016-00-30. Não conseguiu lidar com a mudança do mês corretamente (embora o ano parecesse bom).Eu usei
date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
e não tenho problemas.fonte