-2

我正在开发一个计算两个给定时间之间差异的程序。两次之间的差异是使用 button1 事件处理程序计算的,并显示在标签中,如下所示的窗口表单布局中所示。

这是我的界面: 在此处输入图像描述

我的代码:

我希望我的问题很清楚。我尽了最大的努力,但无法让它发挥作用。我只是不断得到错误的答案:

 public Form1()
        {
            InitializeComponent();
        }

        DateTime t1 = new DateTime(0, 11, 0);
        DateTime t2 = new DateTime(0, 16, 30);
        DateTime Dif = new DateTime(0, 0, 0);

        private void button1_Click(object sender, EventArgs e)
        {

            Dif = t1 - t2;
            Dif = Dif + DateTime.Parse(label1.Text);
            label1.Text = Dif.ToString();
        }
4

4 回答 4

2

您需要在两个不同的时间获取时间才能看到显着的差异,您可以再添加两个按钮来开始时间和结束计时器。IMO秒表 更准确地用于此目的,在开始按钮单击时启动它并在结束按钮单击时结束它。

启动秒表

private void start_Click(object sender, EventArgs e)
{
    stopWatch.Start();
}

停止秒表

private void end_Click(object sender, EventArgs e)
{
    stopWatch.Stop();
}

在这里你会得到时间间隔

private void button1_Click(object sender, EventArgs e)
{
     TimeSpan ts = stopWatch.Elapsed;  //Here you will get the time interval         
     if(label1.Text != "")
     {
        TimeSpan tsOld =  TimeSpan.Parse(label1.Text);
        label1.Text = ts.Add(tsOld).ToString(); 
     }
     else
        label1.Text = ts.ToString(); 
}
于 2013-03-12T12:23:18.323 回答
1

目前尚不清楚您要做什么,但您无法使用该值初始化 DateTime。

尝试使用 TimeSpan

    TimeSpan t1 = new TimeSpan(0, 11, 0);
    TimeSpan t2 = new TimeSpan(0, 16, 30);
    TimeSpan Dif = (label1.Tag == null ? new TimeSpan(0, 0, 0) : label1.Tag as TimeSpan);

    Dif = Dif + (t2 - t1);

    label1.Text = Dif.ToString();
    label1.Tag = Dif;
于 2013-03-12T12:27:13.220 回答
0

我想这应该可行:

 public Form1()
        {
            InitializeComponent();
        }

        TimeSpan t1 = new TimeSpan(0, 11, 0);
        TimeSpan t2 = new TimeSpan(0, 16, 30);

        private void button1_Click(object sender, EventArgs e)
        {
            TimeSpan dif = t2 - t1;
            label1.Text = dif.ToString();
        }
于 2013-03-12T12:28:39.903 回答
0

你只需要使用timeSpan类型减去两个dateTime即可!这是一个我没有编译这段代码的小例子:

DateTime TimeDate1 = DateTime.now;
Thread.Sleep(10000);
DateTime TimeDate2 = DateTime.now;
TimeSpan dateTimeResult = TimeDate2 - TimeDate1;

结果应该是 10 秒

于 2013-03-12T12:33:23.150 回答