【发布时间】:2014-09-01 13:41:09
【问题描述】:
你好 stackoverflow 的人们。当我尝试将时间跨度转换为字符串时遇到问题。
代码如下:
private void timer1_Tick(object sender, EventArgs e)
{
timeLeft = timeLeft - 1;
TimeLabel.Text = TimeSpan.FromMilliseconds(timeLeft).ToString("h'h 'm'm 's's'");
}
请注意,timeLeft 以毫秒为单位。
但是,每当我尝试通过这个时,我都会得到 2 组分钟部分。 像这样:
虽然应该是这个时间:
【问题讨论】:
-
您应该通过减去两个
DateTime值来计算剩余时间,其中一个是DateTime.Now。您不能保证计时器每次应该正确计时,并且可能会以任何一种方式倾斜毫秒,随着时间的推移,这会导致您剩余的时间不准确。 -
另外,我不明白这里有什么问题。你从值中减去
1,然后将其转换为FromMilliseconds,显然你一次倒计时一毫秒。这将在 208 个刻度后为您提供显示的值。这不是你想要的吗?如果不是,那你为什么要那样做呢? -
56.792 不是 2 组分钟。它是 56 秒和 792 毫秒
-
我不明白问题是什么?你能解释得更好吗?
标签: c# string timer visual-c#-express-2010