秒表的单位。累积的财产

时间:2014-07-08 22:23:05

标签: c# stopwatch elapsedtime

我对这个stopWatch.Elapsed属性非常困惑。它以此格式显示时间值enter image description here

我想知道在这个输出结尾我应该添加什么。是ms01:20:17.0550410ms)还是s01:20:17.0550410s)? 还有更多,如果我只想采用此输出的ms部分并使用它进行一些计算,我应该采用哪个值,是.0550410还是55.041?我的问题可能听起来很傻,但我真的很困惑! 请帮忙。

7 个答案:

答案 0 :(得分:5)

显示的单位是“秒的小数部分”,到小数点后7位 - 即到1000万分之一秒。

由于毫秒为0.001秒,因此毫秒数为55.041。

现在,正如其他人所说的那样,使用stopWatch.Elapsed.TotalMilliseconds(以获得所有毫秒)或stopWatch.Elapsed.Milliseconds(使所有毫秒不到1秒)。

答案 1 :(得分:3)

  

我对这个stopWatch.Elapsed属性非常困惑。它以此格式显示时间值

我会从一开始就开始,只是为了确保一切都被理解。

Microsoft .Net框架设计者已经决定存储信息的所有变量都来自Class or a Struct(ture)。这两种基类型都有一些默认方法。 ValueType的这些方法之一(我将在下面讨论)是.ToString()。在Windows运行时结构上调用ToString()方法时,它为不覆盖ToString()的值类型提供默认行为。

我假设你在谈论System.Diagnostics.Stopwatch课程。文档说明:

  

秒表实例可以测量一个间隔的经过时间,或多个间隔的经过时间总和。在典型的秒表场景中,您调用Start方法,然后最终调用Stop方法,然后使用Elapsed属性检查已用时间。

在我们开始查看秒表的属性之前,我们需要了解为了让秒表工作,需要有一种方法来存储Magnitude of Time(信息)。 时间的大小在这种情况下是两个时间点之间差异的数字表示;在这种情况下,秒表开始时和秒表结束时。 Microsoft .Net创建了一个名为TimeSpan的结构来存储该值。

查看属性Stopwatch.Elapsed的文档,它的类型为TimeSpan

enter image description here

由于您的屏幕截图似乎位于控制台应用程序中,因此我假设代码(始终提供但不是)如下:

Console.Writeline("Took Time: " + stopWatch.Elapsed.ToString());

此代码使用TimeSpan's .ToString() overrideTimeSpan转换为string

enter image description here

因此,不将值传递给.ToString()是一个空值,默认为("c") TimeSpan格式字符串中的值:

enter image description here

所以使用你的例子:

01:20:17.0550410s

显而易见,01为小时,20为分钟,17为秒,.0550410为十分之一秒(十分位)。最后添加任何字符串值很可能没有意义,因为所有数字都具有不同的持续时间。如果你想要更具体,我认为唯一有意义的方法是将其改为:

01h 20m 17.0550410s

01h 20m 17s 055.0410ms

答案 2 :(得分:1)

Elasped是一个TimeSpan,你所展示的是将其写入控制台的表示(与在任何非字符串对象上调用.ToString()相同),该表示以小时为单位:分钟:秒。分数第二个如果您想以特定的数量显示此内容,则TimeSpan上会显示此属性,而不是执行

Console.WriteLine(stopWatch.Elapsed);

你可以做到

Console.WriteLine(stopWatch.Elapsed.TotalMilliseconds);

澄清

的完整示例
Console.WriteLine(
"The timer ran for " + stopWatch.Elapsed.Hours + " Hours, " 
+ stopWatch.Elapsed.Minutes + " Minutes and " 
+ stopWatch.Elapsed.Seconds + ". this amounts to a total of "
+ stopWatch.Elapsed.TotalMilliseconds + " ms" );

答案 3 :(得分:1)

根据documentation for TimeSpan

  

TimeSpan值可以表示为[ - ] d.hh:mm:ss.ff,其中[...] ss是秒,ff是秒的分数

所以在你的情况下,它是17.0550410秒。

答案 4 :(得分:1)

看起来您只是使用.ToString()属性的默认Stopwatch.Elapsed方法,该方法实际上是TimeSpan对象。您可以绝对控制此TimeSpan的字符串格式,以及使用它的数字组件进行数学运算(舍入,添加等)。请阅读:Stopwatch.Elapsed Property

答案 5 :(得分:0)

快速搜索&#c;#秒表'返回显示Stopwatch.Elapsed是TimeSpan的MSDN documentation。然后搜索' c#TimeSpan'返回MSDN documentation,显示TimeSpan.ToString()返回具有以下格式的字符串:[-][d.]hh:mm:ss[.fffffff]。这只是使用谷歌。下次在提出问题之前尝试做一些研究。

答案 6 :(得分:0)

假设您对StopWatch.Elapsed感兴趣,那么......

在这种情况下,我发现documentation通常非常有帮助。

它声明StopWatch.Elapsed返回

  

只读 TimeSpan ,表示当前实例测量的总耗用时间。

documentation for TimeSpan声明了许多可用的属性,其中一个是毫秒,另一个是 TotalMilliseconds 。根据文件:

  

毫秒 - 获取当前TimeSpan结构所代表的时间间隔的毫秒分量。

  

TotalMilliseconds - 获取以整数和小数毫秒表示的当前TimeSpan结构的值。

其他属性允许您查看天,小时,分钟,秒等。请使用文档,因为它为每个人节省了大量的时间和精力。