获得两个值之间的时差

在我的应用程序中,我有4个TextBoxes和2个TextBoxes来输入开始时间,2个TextBoxes来输入end-time。

用户将始终输入完成的时间,因此输入将始终为11:30,12:45,依此类推。

如何在开始和结束时间之间获得小时和分钟的差异?

使用TimeSpan类和DateTime的Subtract方法。

DateTime t1 = Convert.ToDateTime(textBox1.Text); DateTime t2 = Convert.ToDateTime(textBox2.Text); TimeSpan ts = t1.Subtract(t2); 

您可以通过减法获得差异的TimeSpan

 TimeSpan time1 = TimeSpan.Parse(textBox1.Text); TimeSpan time2 = TimeSpan.Parse(textBox2.Text); TimeSpan difference = time1 - time2; int hours = difference.Hours; int minutes = difference.Minutes; 

创建两个DateTime对象解析TextBox控件中的值并简单地减去两个DateTime ,您将得到一个TimeSpan对象,这是您正在寻找的。

使用TimeSpan,无需使用日期

 var start = TimeSpan.Parse(start.Text); var end = TimeSpan.Parse(end.Text); TimeSpan result = end - start; var diffInMinutes = result.TotalMinutes(); 

使用时间跨度:

  DateTime dt1 = new DateTime(starttime.text); DateTime dt2 = new DateTime(endtime.text); TimeSpan result = dt2 - dt1; 

然后你可以从结果中得到分钟,秒等。

 TimeSpan difference = DateTime.Parse(txtbox1.Text) - Datetime.Parse(txtbox2.Text); 

例:

 TimeSpan difference = DateTime.Parse("12:55")-DateTime.Parse("11:45"); double hourDiff= difference.TotalHours; double minutes = difference.TotalMinutes; Console.WriteLine(hourDiff);//1.16666666666667 Console.WriteLine(minutes);//70 

将小时数转换为分钟数,将其添加到现有分钟数,将其转换为总秒数,并对结束时间执行相同操作。 相互减去它们,将它们转换回数小时和分钟。 记住一小时60分钟,一分钟60秒,这就是我如何处理它。 因为总秒数总是相同的,所以很难尝试教一台计算机试图从60回到0或从12回到1.更容易使用一些完美的线性像秒。 然后向上重新转换

您可以减去两个DateTime并接收TimeSpan结构。 这具有检索DaysHoursMinutesSeconds等的属性。

 var first = new DateTime(2012, 05, 08, 10, 30, 00); var second = new DateTime(2012, 05, 08, 11, 49, 13); var diff = first - second; var hours = diff.Hours; var mins = diff.Minutes;