想要在Winform程序上每秒显示更新程序的运行时间,格式为"运行时间:XX天XX小时XX分钟XX秒",可以实现的方法有以下几种。
(1)利用Stopwatch计算Winform程序运行时间
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
//在主窗体加载后开始计时
sw.Start();
//获取现在的运行时间
private void timer1_Tick(object sender, EventArgs e)
{
//获取程序从"sw.Start();"到现在的时间
TimeSpan ts = sw.Elapsed;
RunTimeLabel.Text = "运行时间:" + ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" +
ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒";
}
由于秒数直接取整秒而不是毫秒涉及到四舍五入,界面显示上会出现秒数不变或者秒数直接+2的情况;还可以通过记录开始时间,再获取现在的时间,二者相减得到运行时间,但是在显示整秒时还是会涉及到四舍五入导致秒数不变或者秒数直接+2的情况,因此我最后用了方法(2)。
TimeSpan ts;
int seconds = 0;
private void timer1_Tick(object sender, EventArgs e)
{
seconds++;
ts = TimeSpan.FromSeconds(seconds);
//更新程序运行的时间
RunTimeLabel.Text = "运行时间:" + ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" +
ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒";
//更新现在的时间
NowTimeLabel.Text = DateTime.Now.ToString();
}