2012-01-13 35 views
10

quisiera restar segundos a partir de una fecha, por ejemplo:Obtener un DateTime restando segundos desde la fecha actual

Digamos que tengo 1300 segundos en un entero sin signo, me gustaría aprovechar la fecha actual y hora, reste 1.300 segundos de ella y termine con:

01/13/2012 2:15 PM (el formato en realidad no importa).

Yo probé:

DateTime dt = new DateTime(); 
dt.Add(new TimeSpan(0, 0, ui.OnlineTime)); 
Online.Text = dt.ToLongDateString(); 
+0

No se puede convertir un espacio de tiempo en una fecha. Intente pensarlo de esta manera: quiero ** agregar ** (o eliminar) un lapso de tiempo de 1300 segundos a la fecha de hoy. – Groo

+1

Lo intenté: DateTime dt = new DateTime(); dt.Add (nuevo TimeSpan (0, 0, ui.OnlineTime)); Online.Text = dt.ToLongDateString(); – Eric

+3

Su problema es que 'DateTime' es inmutable. 'Add' devuelve un nuevo DateTime. Además, use 'TimeSpan.FromSeconds'. – SLaks

Respuesta

22

AddSeconds(double value) método de DateTime toma número positivo y negativo de segundos:

[value parámetro representa] un número de segundos enteros y fraccionarios. El parámetro de valor puede ser negativo o positivo.

Por lo tanto, para restar 1.300 segundos es necesario agregar -1300 segundos:

DateTime.Now.AddSeconds(-1300); 
3
DateTime.Now.AddSeconds(-1300) 

Eso fue fácil

+0

Creo que su comentario fue correcto. El autor está agregando correctamente a su 'DateTime', el problema es que no están guardando el valor de retorno del método de adición al que están llamando. Entonces, llamar 'AddSeconds()' es realmente solo la mitad de la solución. – BACON

+0

@BACON: Lo sé. Publiqué esta respuesta antes de su comentario. – SLaks

3

Probar:

DateTime.Now.AddSeconds(-1300); 
Cuestiones relacionadas