2012-07-20 44 views
11

que tienen este sencillo programa:DateTime.AddDays() no funciona como se esperaba

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

me encontré esto y depurado aux2.AddDays(1); no parece funcionar, lo que me estoy perdiendo aquí? debería devolver 25 pero la respuesta es una.

¿Cuál es el problema?

también AddHours no funciona, supongo que los otros no están funcionando también.

+6

Las instancias 'DateTime' son inmutables. Debe asignar el resultado de '.AddDays' a otra instancia (o a sí mismo). – mellamokb

+1

+1 Downvoters - ¿por qué? Esto parece una pregunta perfectamente legítima. – JDB

Respuesta

43

No funciona pero no hace nada con el valor de retorno, intente

aux2 = aux2.AddDays(1); 

DateTime s cuota de esta faceta de la inmutabilidad con String s.


EDITAR

Hay un pequeño párrafo sobre él en MSDN

Este método no cambia el valor de esta DateTime. En su lugar, devuelve un nuevo DateTime cuyo valor es el resultado de esta operación.

+0

en serio: | , estoy sin palabras, pensé que aux2 cambiará automáticamente y que esto es un error. –

+0

sí, "Devuelve una nueva cadena de fecha y hora ..." ", información sobre herramientas en el mouse sobre –

+2

@ user1103707 - He estado programando en .NET durante 12 años y aún así me tropiezo con eso de vez en cuando. no siempre es intuitivo. – JDB

4

DateTime.AddDays devuelve un nuevo DateTime que agrega el número especificado de días. Debe asignarlo a su variable:

aux2 = aux2.AddDays(1); 
+0

Creo que te refieres a 'aux2 = aux2.AddDays (1);' – JDB

+0

Sí, fue un error tipográfico. Gracias – Zbigniew

Cuestiones relacionadas