2012-07-20 39 views
11

Mam ten prosty program:DateTime.AddDays() nie działa zgodnie z oczekiwaniami

 DateTime aux = new DateTime(2012, 6, 12, 12, 24, 0); 
     DateTime aux2 = new DateTime(2012, 6, 12, 13, 24, 0); 
     aux2.AddDays(1); 

     Console.WriteLine((aux2 - aux).TotalHours.ToString()); 

     Console.ReadLine(); 

I debugowane to i okazało aux2.AddDays(1); nie wydają się działać, co ja tu brakuje? powinien wrócić 25, ale odpowiedź jest jedna.

Na czym polega problem?

również AddHours nie działa, myślę, że inni nie pracują zbyt.

+6

Instancje "DateTime" są niezmienne. Musisz przypisać wynik '.AddDays' do innej instancji (lub do samej siebie). – mellamokb

+1

+1 Downwotarzy - dlaczego? To wygląda jak całkowicie uzasadnione pytanie. – JDB

Odpowiedz

43

To działa, ale nie nic z wartości zwracanej zrobić, spróbuj

aux2 = aux2.AddDays(1); 

DateTime Udostępnij ten aspekt niezmienności z String s.


EDIT

Jest trochę ustęp o tym na MSDN

metoda ta nie zmienia się wartość tej DateTime. Zamiast tego zwraca nowy DateTime, której wartość jest wynikiem tej operacji.

+0

poważnie: | , nie mam słów, myślałem, że aux2 zmieni się automatycznie i że jest to błąd. –

+0

tak „Zwraca nowy DateTime ciąg ...””, podpowiedzi na myszy nad –

+2

@ user1103707 - I zostały programowania w .NET przez 12 lat, a ja wciąż się potknął się na tym, co raz na jakiś czas jest. nie zawsze intuicyjny. – JDB

4

DateTime.AddDays zwraca nowy obiekt DateTime, który dodaje określoną liczbę dni. Musisz przypisać go do swojej zmiennej:

aux2 = aux2.AddDays(1); 
+0

myślę znaczy 'aux2 = aux2.AddDays (1).' – JDB

+0

Tak, to była literówka Dzięki – Zbigniew

Powiązane problemy