2013-03-12 120 views
-2

我正在研究计算两个给定时间之间差异的程序。两次之间的差异使用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(); 
     } 
+1

你想说什么和你有什么期待? – LukeHennerley 2013-03-12 12:23:38

+0

不应该't1 - t2'产生'TimeSpan'对象,并且在尝试将它分配给'DateTime'对象时不应该出错?你期望从'new DateTime(0,16,30)'得到什么? – Corak 2013-03-12 12:31:13

回答

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

我的时代是静态的简单 – Tacit 2013-03-12 12:25:45

+0

是不是一个秒表是一个小时计算器为rota – Tacit 2013-03-12 12:26:25

+0

我喜欢这个教程,但不是我之后 – Tacit 2013-03-12 12:40:19

1

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

尝试用时间跨度

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; 
+0

但我需要通过将新的差异添加到已计算的值来继续增加标签值 – Tacit 2013-03-12 12:34:43

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

两个日期时间之间的差异会导致TimeSpan,而不是新的日期时间对象 – 2013-03-12 12:29:27

+1

您尝试过或只是假设? – Steve 2013-03-12 12:29:37

0

你只需要使用的时间跨度类型减去两个日期时间! 这里是一个小例子,我没有编译此代码:

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

结果应为10秒

+0

我不认为我的问题被正确理解,我想要做的就是计算我放在那里的时间的差异,并继续通过增加相同的值来增加标签的差异 – Tacit 2013-03-12 12:39:09

+0

只需在日期时间值1和值2。使用timeSpan值来减去前两个值 – Othar 2013-03-12 12:56:18