我对这个stopWatch.Elapsed
属性非常困惑。它以此格式显示时间值
我想知道在这个输出结尾我应该添加什么。是ms
(01:20:17.0550410ms
)还是s
(01:20:17.0550410s
)?
还有更多,如果我只想采用此输出的ms
部分并使用它进行一些计算,我应该采用哪个值,是.0550410
还是55.041
?我的问题可能听起来很傻,但我真的很困惑!
请帮忙。
答案 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
。
由于您的屏幕截图似乎位于控制台应用程序中,因此我假设代码(始终提供但不是)如下:
Console.Writeline("Took Time: " + stopWatch.Elapsed.ToString());
此代码使用TimeSpan's .ToString() override将TimeSpan
转换为string
:
因此,不将值传递给.ToString()
是一个空值,默认为("c")
TimeSpan格式字符串中的值:
所以使用你的例子:
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)
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结构的值。
其他属性允许您查看天,小时,分钟,秒等。请使用文档,因为它为每个人节省了大量的时间和精力。