2012-07-20 15 views
11

ho questo semplice programma:DateTime.AddDays() non funziona come previsto

 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(); 

ho il debug questo e ho trovato aux2.AddDays(1); non sembra funzionare, cosa mi manca qui? dovrebbe restituire 25 ma la risposta è una.

Qual è il problema?

anche AddHours non funziona, suppongo che anche gli altri non funzionino.

+6

Le istanze di 'DateTime' sono immutabili. Devi assegnare il risultato di '.AddDays' a un'altra istanza (oa se stessa). – mellamokb

+1

+1 downvoters - perché? Questa sembra una domanda perfettamente legittima. – JDB

risposta

43

Si fa il lavoro, ma non si fa nulla con il valore di ritorno, provare

aux2 = aux2.AddDays(1); 

DateTime s quota di questo aspetto di immutabilità con String s.


EDIT

C'è un piccolo paragrafo su di esso su MSDN

Questo metodo non cambia il valore di questo DateTime. Invece, restituisce un nuovo DateTime il cui valore è il risultato di questa operazione.

+0

seriamente: | , sono senza parole, ho pensato che aux2 cambierà automaticamente e che questo è un bug. –

+0

sì, "Restituisce una nuova stringa DateTime ..." ", suggerimento del mouse su –

+2

@ user1103707 - Ho iniziato a programmare in .NET per 12 anni e continuo a saltarmi su ogni tanto. non sempre intuitivo. – JDB

4

DateTime.AddDays restituisce un nuovo DateTime che aggiunge il numero di giorni specificato. È necessario assegnarlo alla variabile:

aux2 = aux2.AddDays(1); 
+0

Penso che tu intenda "aux2 = aux2.AddDays (1);" – JDB

+0

Sì, è stato un errore di battitura. – Zbigniew

Problemi correlati