2012-01-19 12 views
15

voglio convertire il valore periodo diff sempre positivoperiodo sempre positivo

Il mio codice è qui:

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

voglio ottenere il risultato di lateaftertime sempre positivo .. please help me ..

+0

Possibile duplicato di [Gestisce gli intervalli di tempo negativo] (https://stackoverflow.com/questions/1018643/handle-negative-time-spans) – Michael

risposta

1

OK, suppongo che tu stia utilizzando C# perché sembra così.

La - operatore sulla classe TimeSpan è stato sovraccaricato, quindi tutto quello che dovete fare è prefisso il calcolo con - come si farebbe se si stesse eseguendo la conversione in un numero intero. Qui è un codice che è possibile eseguire in una console app:

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

È possibile utilizzare lateaftertime.Duration() per ottenere un arco non negativo.

+12

Non c'è bisogno di tale cosa, basta usare 'Durata()' che darebbe un assoluto 'TimeSpan' – V4Vendetta

+0

@ V4Vendetta: non l'ho mai saputo. Impara qualcosa ogni giorno Questo è un approccio molto più carino. Ho aggiornato la mia risposta. – recursive

+1

Invece di cambiare la tua risposta, hai chiesto a V4Vendetta di postare il suo e ottenere il meritato riconoscimento. Questa è totalmente la mia opinione personale, ma penso che sia ingiusto che tu ottenga i voti per la sua risposta. – julealgon

2

Si potrebbe utilizzare Math.Abs ​​():

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

utente V4Vendetta ha effettuato la chiamata giusta in un commento però. Utilizzare la proprietà TimeSpan.Duration, restituisce sempre il valore assoluto.