Mam następujący kod w moim programie C #.
DateTime dateForButton = DateTime.Now;
dateForButton = dateForButton.AddDays(-1); // ERROR: un-representable DateTime
Za każdym razem, gdy go uruchamiam, pojawia się następujący błąd:
Dodana lub odjęta wartość powoduje, że DateTime nie można przedstawić.
Nazwa parametru: wartość
Nigdy wcześniej nie widziałem tego komunikatu o błędzie i nie rozumiem, dlaczego go widzę. Z odpowiedzi, które Iv'e przeczytałem do tej pory, dochodzę do wniosku, że mogę użyć -1 w operacji dodawania, aby odjąć dni, ale jak pokazuje moje pytanie, nie dotyczy to tego, co próbuję zrobić.
DateTime.MinValue
lub chcesz coś dodaćDateTime.MaxValue
(lub próbujesz utworzyć wystąpienie daty poza tym przedziałem min-maks). Czy na pewnoMinValue
gdzieś nie przypisujesz ?Odpowiedzi:
Ten błąd zwykle występuje, gdy próbujesz odjąć interwał od
DateTime.MinValue
lub chcesz coś dodaćDateTime.MaxValue
(lub próbujesz utworzyć wystąpienie daty poza tym przedziałem min-maks). Czy na pewnoMinValue
gdzieś nie przypisujesz ?źródło
źródło
Możesz to zrobić:
źródło
Możesz użyć następującego kodu:
źródło
dateTime.AddDays(-1)
Nie odejmować, że jeden dzień zdateTime
odniesieniem. Zwróci nowe wystąpienie, po odjęciu tego jednego dnia od pierwotnego odniesienia.źródło
Miałem problemy z korzystaniem z AddDays (-1) .
Moje rozwiązanie to TimeSpan .
źródło
Obiekt (tj. Zmienna docelowa) metody AddDays nie może być tym samym, co źródło.
Zamiast:
Spróbuj tego zamiast tego:
źródło
Zamiast bezpośrednio zmniejszać liczbę dni od obiektu daty, najpierw pobierz wartość daty, a następnie odejmij dni. Zobacz poniższy przykład:
Tutaj someDate jest zmienną typu DateTime.
źródło
Używanie
AddDays(-1)
działało dla mnie, dopóki nie próbowałem przekroczyć miesięcy. Kiedy próbowałem odjąć 2 dni od 01.01.2017, wynik był 2016-00-30. Nie był w stanie poprawnie obsłużyć zmiany miesiąca (choć rok wydawał się w porządku).Użyłem
date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
i nie mam żadnych problemów.źródło