我有一个计数器,每1秒钟计数一次,并将1加1。
问题
如何格式化我的字符串,以便计数器看起来像这样:
0时01分23秒
而不是:
123
我尝试过的事情
到目前为止我尝试过的事情:
for (int i = 0; i < 1; i++)
{
_Counter += 1;
labelUpTime.Text = _Counter.ToString();
}
我的计时器的间隔设置为:1000(因此它每秒加1) 我确实读过一些关于string.Format(“”)的内容,但我不知道它是否适用 谢谢,如果你能引导我完成这个:D!
答案 0 :(得分:6)
使用TimeSpan:
_Counter += 1;
labelUpTime.Text = TimeSpan.FromSeconds(_Counter).ToString();
答案 1 :(得分:2)
你可以将它设为TimeSpan
(就是它的时间,一段时间),然后格式化:
labelUpTime.Text = TimeSpan.FromSeconds(_Counter).ToString();
答案 2 :(得分: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
方法调整格式。
答案 3 :(得分:0)
TimeSpan timer = new TimeSpan(0);
并按照你的间隔:
timer += TimeSpan.FromSeconds(1);
答案 4 :(得分:0)
使用时间跨度。添加第二次使用
mytimespan.Add(new TimespanFromSeconds(1));
Console.WriteLine(mytimespan); //Output in the form of xx:xx:xx
答案 5 :(得分: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();
}
}