2012-12-27 77 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'期间发生,您会得到一个愚蠢的输出。 –

相关问题