关于计时

kylewell 2008-12-10 03:24:18
winform中执行开始就开始计时,一秒一秒前进,时间格式:00:00:00 执行结束计时结束,得出执行所花费的时间,以下是我写的,但好像不正确。求正确的该怎样写
private DateTime dtStart;
private void timer1_Tick(object sender, EventArgs e)
{
DateTime mytime=DateTime.Now;
this.label1.Text = string.Format("{0}:{1}:{2}", (mytime.Hour - dtStart.Hour).ToString().PadLeft(2, '0'), (mytime.Minute - dtStart.Minute).ToString().PadLeft(2, '0'), (mytime.Second - dtStart.Second).ToString().PadLeft(2, '0'));
}

private void button1_Click(object sender, EventArgs e)
{
dtStart = DateTime.Now;
this.timer1.Enabled = true;
}

这样写的话,执行还没到一分钟就乱掉了
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogogo 2008-12-10
  • 打赏
  • 举报
回复
乱掉的原因是mytime.Second - dtStart.Second获得是2个时间相差的总秒数,比如4分0秒和5分10秒差70秒钟,你的算法结果就是70,你想要的其实是10-0=10,要的是10秒,乱掉总是要等分钟进位以后出现,所以你要过一分钟才看到乱掉。
gogogo 2008-12-10
  • 打赏
  • 举报
回复
        private DateTime dtStart;

private void button1_Click(object sender, EventArgs e)
{
dtStart = DateTime.Now;
this.timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = Convert.ToDateTime(((TimeSpan)(DateTime.Now - dtStart)).ToString()).ToString("HH:mm:ss");
}
kylewell 2008-12-10
  • 打赏
  • 举报
回复
没人知道吗?自己顶一个

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧