我想在网页上显示持续时间,以毫秒为单位。到目前为止,我已经这样做了: 我设法在标签上显示此输出: 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");
}
答案 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");
答案 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 Strings,The "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