2012-01-19 27 views
15

quiero convertir el valor de intervalo de tiempo diff siempre positivolapso de tiempo siempre positivo

Mi código está aquí:

TimeSpan lateaftertime = new TimeSpan(); 
lateaftertime = lateafter - Convert.ToDateTime(intime); 

quiero conseguir el resultado de lateaftertime siempre positivo .. favor me ayude ..

+0

Posible duplicado de [Manejar períodos de tiempo negativos] (https://stackoverflow.com/questions/1018643/handle-negative-time-spans) – Michael

Respuesta

1

OK, supongo que estás usando C# porque se ve de esa manera.

El operador - en la clase TimeSpan se ha sobrecargado, por lo que todo lo que tiene que hacer es anteponer el cálculo con - como lo haría si estuviera realizando la conversión en un entero. Aquí hay un código que se puede ejecutar en una aplicación de consola:

var inTime = "19-Jan-2012 21:00"; 
var lateAfter = Convert.ToDateTime("19-Jan-2012 20:00"); 
TimeSpan lateAfterTime = lateAfter - Convert.ToDateTime(inTime); 

var positiveLateAfterTime = 
    lateAfterTime < TimeSpan.Zero 
    ? 
    -lateAfterTime 
    : 
    lateAfterTime; 

Console.WriteLine(positiveLateAfterTime.ToString()); 
40

Puede utilizar lateaftertime.Duration() para conseguir un lapso no negativo.

+12

No hay necesidad de tal cosa, solo use 'Duration()' que daría un absoluto 'TimeSpan' – V4Vendetta

+0

@ V4Vendetta: nunca lo supe. Aprende algo todos los días. Ese es un enfoque mucho más agradable. He actualizado mi respuesta. – recursive

+1

En lugar de cambiar su respuesta, debería haberle pedido a @V4Vendetta que publique la suya y obtenga el merecido reconocimiento. Esta es una opinión totalmente personal, pero creo que es injusto que obtienes los votos por su respuesta. – julealgon

2

Usted podría utilizar Math.Abs ​​():

 lateaftertime = new TimeSpan(Math.Abs(lateaftertime.Ticks)); 

usuario V4Vendetta tomó la decisión correcta en un comentario sin embargo. Use la propiedad TimeSpan.Duration, siempre devuelve el valor absoluto.

Cuestiones relacionadas