6

我有一个计数器每 1 秒计数一次并将 1 添加到 int。

问题
如何格式化我的字符串,使计数器看起来像这样:

00:01:23

代替:

123

我尝试过
的事情到目前为止我尝试过的事情:

for (int i = 0; i < 1; i++)
        {
            _Counter += 1;
            labelUpTime.Text = _Counter.ToString();
        }

我的计时器的间隔设置为:1000(所以它每秒增加 1)。
我确实读过一些关于 string.Format("") 的东西,但我不知道它是否适用。
谢谢你能指导我完成这个:D!

4

6 回答 6

6

使用时间跨度:

_Counter += 1;
labelUpTime.Text = TimeSpan.FromSeconds(_Counter).ToString();
于 2012-04-04T12:52:08.757 回答
2

你可以把它做成一个TimeSpan(因为它是一个时间跨度),然后格式化:

labelUpTime.Text = TimeSpan.FromSeconds(_Counter).ToString();
于 2012-04-04T12:50:14.150 回答
1

不要使用计数器,也不要依赖计时器每秒钟准确地触发一次。它不会。做这样的事情。

class TimerTest
{
    private DateTime _start = DateTime.Now;
    private Timer _timer = new Timer(1000);

    public TimerTest()
    {
        // (DateTime.Now - _start) returns a TimeSpan object
        // Default TimeSpan.ToString() returns 00:00:00
        _timer.Elapsed = (o, e) => labelUpTime.Text = (DateTime.Now - _start).ToString();
    }
}

TimeSpan.ToString您可以使用该方法调整格式。

于 2012-04-04T12:51:55.607 回答
0
TimeSpan timer = new TimeSpan(0);

在你的时间间隔内:

timer += TimeSpan.FromSeconds(1);
于 2012-04-04T12:51:21.453 回答
0

使用时间跨度。添加第二次使用

mytimespan.Add(new TimespanFromSeconds(1));
Console.WriteLine(mytimespan);    //Output in the form of xx:xx:xx

http://www.dotnetperls.com/timespan

于 2012-04-04T12:54:45.550 回答
0

对我来说效果很好

    public TimeSpan ElapsedTimeFormatted
    {
        get
        {
            if (FinishedOn != null &&
                StartedAt != null)
            {
                TimeSpan durationCount = new TimeSpan();

                int hours = 0;
                int minutes = 0;
                int seconds = 0;

                var times = Segments.Select(c => c.ElapsedTimeFormatted).ToList();

                foreach (var time in times)
                {
                    TimeSpan timeParse = TimeSpan.Parse(time);

                    hours = hours + (int)timeParse.Hours;
                    minutes = minutes + (int)timeParse.Minutes;
                    seconds = seconds + (int)timeParse.Seconds;

                    durationCount = new TimeSpan(hours, minutes, seconds);
                }

                return durationCount;
            }

            return new TimeSpan();
        }
    }
于 2021-04-07T14:42:10.990 回答