在我的应用程序中,我有 4 个文本框和 2 个文本框输入开始时间,以及 2 个文本框输入结束时间。
用户将始终输入完成时间,因此输入将始终为 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();
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
使用时间跨度:
DateTime dt1 = new DateTime(starttime.text);
DateTime dt2 = new DateTime(endtime.text);
TimeSpan result = dt2 - dt1;
然后你可以从结果中得到分钟、秒等。
将小时转换为分钟,将其添加到现有分钟,将其转换为总秒数,对 endtime 执行相同操作。将它们彼此减去,将它们转换回小时和分钟。记住一小时内的 60 分钟,一分钟内的 60 秒,我就是这样处理它的。因为总秒数总是相同的,所以很难教计算机尝试从 60 回绕到 0 或从 12 回绕到 1。更容易使用像秒这样完全线性的东西。然后向上重新转换
您可以减去两个DateTime
s 并接收一个TimeSpan
结构。这具有检索Days
, Hours
, Minutes
,Seconds
等的属性。
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;