2012-12-27 79 views
0

在我的C#代碼中,我使用了DateTime.Now,以及之後的時間。但是現在我怎麼才能以秒爲單位來獲得這兩個日期對象之間的差異呢?如何在幾秒鐘內獲得時間差異?

+3

記住,的'精度DateTime「只有16ms左右,所以如果你的時間+/- 32ms的變化太大,你不應該使用'DateTime',你應該使用'StopWatch'。 (也許即使你應該使用'StopWatch'。) – Servy

+0

是的,我現在使用秒錶。 – omega

回答

4

你有沒有考慮使用StopWatch對象?

using System.Diagnostics; 

Stopwatch watch = Stopwatch.StartNew(); 

// execute some code here.... 

parserWatch.Stop(); 

然後你就可以得到秒這樣的:

int seconds = watch.ElapsedMilliseconds/1000; 

還是一個TimeSpan對象,如果你想:

TimeSpan time = watch.Elapsed; 
+0

你想除以1000,而不是乘。 –

+0

哎呀謝謝@ jeremyRoman,你是絕對正確:) –

+0

謝謝這是一個很好的解決方案。 – omega

11
long seconds = (long)(then - now).TotalSeconds; 

減去2個DateTime都要返回一個TimeSpan對象,它具有一個整數Seconds屬性和一個浮點TotalSeconds屬性(0和60之間)。

+0

我真的很喜歡他的應用程序可能運行超過'Int32.MaxValue' _seconds_的想法,所以我們最好使用'long'。沒有更多的unix時間溢出問題! –

3

使用Subtract方法的另一種方式:

double second = then.Subtract(now).TotalSeconds; 
3
double starttime = Environment.TickCount; 
    // do sth 
double endtime = Environment.TickCount; 
double millisecs = endtime - starttime; // this is in milliseconds. 
double seconds = (millisecs/1000);   // this is in seconds. 
+0

'TickCount'可能會溢出(如果計算機從未重新啓動,則會每49.7天(或1.63個月)這樣做一次),所以如果偶然發生溢出在'// do sth'期間發生,您會得到一個愚蠢的輸出。 –

相關問題