2013-03-12 134 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