2014-01-09 77 views
0

好吧,我有一種方法來計算2個文件之間的時間差異,或者更確切地說2個「日期」。 然而,如果時間差是一天,意味着一開始,讓我們說23:00,另一天01:20,它會失敗,並認爲它的後面,而不僅僅是前面2個小時。計算時間差,並使用天

下面是代碼:

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     DateTime firstDt; 
     DateTime lastDt; 
     if (DateTime.TryParseExact(First.Text, "yyyy-MM-dd HH-mm-ss-fff", CultureInfo.InvariantCulture, DateTimeStyles.None, out firstDt) 
       && DateTime.TryParseExact(Last.Text, "yyyy-MM-dd HH-mm-ss-fff", CultureInfo.InvariantCulture, DateTimeStyles.None, out lastDt)) 
     { 
      var difference = lastDt.TimeOfDay - firstDt.TimeOfDay; 
      Console.WriteLine(difference); 
      CalcDiff.Text = "DelayAudio(" + difference.TotalSeconds.ToString("F3") + ")"; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("TimeSpan Calculate: " + ex.Message); 
    } 
} 

不是真的知道如何使其使用的節,因爲它似乎像它應該這樣做。

+0

你得到的錯誤是什麼? –

+0

沒有得到任何錯誤,只是錯誤的時間,它是通過使用整個DAteTime而不是「TimeOfDay」來解決的,因爲它忽略了Days本身,只關心「24:00」時鐘。 – Zerowalker

回答

5

上滿日期(而不是他們的時間成分)只是執行減法:

var difference = lastDt - firstDt; 
+0

它工作,多麼簡單,謝謝! – Zerowalker

0
  DateTime firstDt; 
      DateTime lastDt; 
      DateTime.TryParse(First.Text, out firstDt); 
      DateTime.TryParse(Last.Text, out lastDt); 
      TimeSpan difference = lastDt - firstDt; 
      CalcDiff.Text = "DelayAudio(" + difference.ToString()+ ")"; 
0

您可以使用時間跨度類來做到這一點。因此,你需要從另一個減去日期,如

TimeSpan ts = lastDate - startDate; 
Console.Write(ts.Hours + ":" + ts.Minutes + ":" + ts.Seconds); // ts.ToString("HH:mm:ss") should work.