我对这个stopWatch.Elapsed
属性感到非常困惑。它以这种格式显示时间值
我想知道我应该在这个输出的末尾添加什么。是ms
( 01:20:17.0550410ms
) 还是只是s
( 01:20:17.0550410s
)?而且,如果我只想取ms
这个输出的一部分并用它做一些计算,我应该取哪个值,是吗.0550410
?55.041
我的问题可能听起来很傻,但我真的很困惑!请帮忙。
我对这个stopWatch.Elapsed
属性感到非常困惑。它以这种格式显示时间值
我想知道我应该在这个输出的末尾添加什么。是ms
( 01:20:17.0550410ms
) 还是只是s
( 01:20:17.0550410s
)?而且,如果我只想取ms
这个输出的一部分并用它做一些计算,我应该取哪个值,是吗.0550410
?55.041
我的问题可能听起来很傻,但我真的很困惑!请帮忙。
显示的单位是“秒的小数部分”,小数点后第 7 位 - 即百万分之一秒。
因为一毫秒是 0.001 秒,所以你的毫秒数是 55.041。
现在,正如其他人所说,使用stopWatch.Elapsed.TotalMilliseconds
(获取所有毫秒数)或stopWatch.Elapsed.Milliseconds
(获取所有毫秒数少于 1 秒)。
我对这个 stopWatch.Elapsed 属性感到非常困惑。它以这种格式显示时间值
我将从头开始,只是为了确保一切都被理解。
Microsoft .Net 框架设计者已决定所有存储信息的变量都来自Class 或 Struct(ture)。这两种基本类型都有一些默认方法。ValueType 的这些方法之一(我将在下面讨论)是.ToString()。当您ToString()
在 Windows 运行时结构上调用该方法时,它会为不覆盖的值类型提供默认行为ToString()
。
我假设您正在谈论System.Diagnostics.Stopwatch类。该文档指出:
秒表实例可以测量一个间隔的经过时间,或跨多个间隔的总经过时间。在典型的秒表方案中,您调用 Start 方法,然后最终调用 Stop 方法,然后使用 Elapsed 属性检查经过的时间。
在我们开始查看秒表的属性之前,我们需要了解,为了让秒表工作,需要有一种方法来存储时间量(信息)。在这种情况下,时间的大小是两个时间点之间差异的数字表示;在这种情况下,秒表何时开始和秒表何时结束。Microsoft .Net 创建了一个名为TimeSpan的结构来存储此值。
查看Stopwatch.Elapsed
它的类型的属性的文档TimeSpan
。
由于您的屏幕截图似乎在控制台应用程序中,因此我假设代码(应始终提供但不提供)如下:
Console.Writeline("Took Time: " + stopWatch.Elapsed.ToString());
此代码使用TimeSpan 的 .ToString() 覆盖TimeSpan
将 转换为 a :string
因此,不传递值.ToString()
是一个空值,默认为("c")
它在 TimeSpan 格式字符串中:
所以使用你的例子:
01:20:17.0550410s
应该很明显,01
是小时,20
是分钟,17
是秒,.0550410
是十分之一秒(分秒)。在末尾添加任何字符串值很可能没有意义,因为所有数字都具有不同的持续时间。如果您想要更具体,我认为唯一有意义的方法是将其更改为:
01h 20m 17.0550410s
或者
01h 20m 17s 055.0410ms
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" );
看起来你只是在使用属性的默认.ToString()
方法Stopwatch.Elapsed
,它实际上是一个TimeSpan
对象。您可以完全控制此 TimeSpan 的字符串格式,以及使用它的数字组件进行数学运算(舍入、加法等)。请阅读:Stopwatch.Elapsed 属性
快速搜索“c# stopwatch”会返回MSDN 文档,显示它Stopwatch.Elapsed
是 TimeSpan。然后在“c# TimeSpan”上搜索会返回MSDN 文档,该文档显示TimeSpan.ToString()
返回具有以下格式的字符串:[-][d.]hh:mm:ss[.fffffff]
. 那只是使用谷歌。下次在问你的问题之前尝试做一些研究。
假设你有兴趣StopWatch.Elapsed
,那么...
在这种情况下,我发现文档通常很有帮助。
它指出StopWatch.Elapsed
返回
一个只读TimeSpan,表示当前实例测量的总经过时间。
TimeSpan的文档说明了它的许多可用属性,其中一个是Milliseconds,另一个是TotalMilliseconds。根据文档:
毫秒 - 获取当前 TimeSpan 结构所表示的时间间隔的毫秒分量。
然而
TotalMilliseconds - 获取当前 TimeSpan 结构的值,以整毫秒和小数毫秒表示。
其他属性允许您检查天、小时、分钟、秒等。请使用文档,因为它可以为每个人节省大量时间和精力。