计算时差,并使用天数

时间:2014-01-09 10:10:13

标签: c#

好的,我有办法计算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);
   }
}

不太确定如何使用Day,因为它似乎应该这样做。

3 个答案:

答案 0 :(得分:5)

只需在完整日期(而不是时间组件)上执行减法:

var difference = lastDt - firstDt;

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

答案 2 :(得分:0)

您可以使用TimeSpan类来执行此操作。因此,您需要从另一个中减去Date,例如

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