计算时差并继续将差异添加到标签

时间:2013-03-12 12:21:41

标签: c# visual-studio-2010 datetime timespan

我正在研究一个计算两次给定时间之间差异的程序。两次之间的差异是使用button1事件处理程序计算的,并显示在标签中,如下面显示的窗体格式所示。

这是我的界面: enter image description here

我的代码:

我希望我的问题很明确。我尽我所能但却无法发挥作用。我只是得到了错误的答案:

 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 个答案:

答案 0 :(得分:2)

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

开始停止观看

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(); 
}

答案 1 :(得分: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;

答案 2 :(得分: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();
        }

答案 3 :(得分:0)

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

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

结果应为10秒