好的,我有办法计算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,因为它似乎应该这样做。
答案 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.