显示持续时间,以毫秒为单位

时间:2012-03-05 11:20:01

标签: c# c#-4.0

我想在网页上显示持续时间,以毫秒为单位。到目前为止,我已经这样做了: 我设法在标签上显示此输出: 00:02:50 ,但我也希望显示毫秒,因此结果应如下所示 00:02:50:000 < / strong>即可。我该如何实现这一目标?

代码背后:

protected void Page_Load(object sender, EventArgs e)
{
    DateTime startTime = DateTime.Now;
    // sleep for 2.5s
    Thread.Sleep(2500);
    DateTime stopTime = DateTime.Now;
    TimeSpan duration = stopTime - startTime;
    Result.Text = duration.ToString("mm':'ss':'ff");
}

6 个答案:

答案 0 :(得分:22)

首先,如果您要计时,我建议您使用StopWatch课程,因为它的目的是什么。您可以在System.Diagnostics命名空间中找到它:System.Diagnostics.Stopwatch

您可以实例化一个新的并使用一行代码var stop = System.Diagnostics.Stopwatch.StartNew();开始测量经过的时间量,然后使用停止方法停止计时器:stop.Stop();。然后,您可以使用Elapsed属性var elapsed = stop.Elapsed;返回已用时间。

然后,为了显示经过的时间(以毫秒为单位),您将使用正确的参数在经过的时间跨度上调用ToString方法。

所以将所有代码放在一起就像这样:

protected void Page_Load(object sender, EventArgs e)
{
    var timer = System.Diagnostics.Stopwatch.StartNew();
    // sleep for 2.5s
    Thread.Sleep(2500);
    timer.Stop();
    var elapsed = timer.Elapsed;
    Result.Text = elapsed.ToString("mm':'ss':'fff");
}

希望有所帮助!

詹姆斯

答案 1 :(得分:4)

doc says:“fff”为您提供:

  

日期和时间值中的毫秒数。

你正在使用“ff”,它会给你:

  

日期和时间值的百分之一秒。

因此,请将您的代码更改为:

duration.ToString("mm':'ss':'fff");

答案 2 :(得分:4)

您当前的代码应显示分钟,秒和百分之一秒

Result.Text = duration.ToString("mm':'ss':'ff");

显示毫秒而不是百分之一秒:

// output: 00:02:500
Result.Text = duration.ToString("mm':'ss':'fff");

请参阅Custom Date and Time Format Strings的文档。

答案 3 :(得分:3)

我觉得你很困惑。在你的情况下,00:02:50表示2秒和50秒。如果要显示毫秒,请使用mm':'ss':'fff之类的格式(注意添加f的格式)。这将打印类似00:02:500的内容,即2秒和500千分之一秒,或2秒500毫秒。

但这并不意味着您的测量结果将精确到毫秒。这不是DateTime.Now的意图。如果您想要精确测量,则应使用StopWatch

答案 4 :(得分:2)

否则只需使用时间跨度的属性:

var result = String.Format("{0}:{1}:{2}", duration.Minutes, duration.Seconds, duration.Milliseconds);
Result.Text = result

通过这种方式,我认为您可以更好地控制要显示的内容,而不是在ToString()方法中格式化时间跨度,这样可以更容易地进行拼写错误...

希望这有帮助!

<强>更新 要添加小时,这就是它的样子:

var result = String.Format("{0}:{1}:{2}:{3}", duration.Hours, duration.Minutes, duration.Seconds, duration.Milliseconds);

答案 5 :(得分:2)

TimeSpan.ToString Method与自定义格式一起使用。

返回的字符串使用“c”格式说明符格式化,格式如下:

[-][d.]hh:mm:ss[.fffffff]

方括号([和])中的元素可能不包含在返回的字符串中。冒号和句号(:和。)是字面字符。

Result.Text = duration.ToString("mm:ss:fff");

Result.Text = duration.ToString("hh:mm:ss.fff");

参考:Custom Date and Time Format StringsThe "fff" Custom Format Specifier

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018