9

在我的应用程序中,我有 4 个文本框和 2 个文本框输入开始时间,以及 2 个文本框输入结束时间。

用户将始终输入完成时间,因此输入将始终为 11:30、12:45 等。

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

4

8 回答 8

16

使用 TimeSpan 类和 DateTime 的 Subtract 方法。

        DateTime t1 = Convert.ToDateTime(textBox1.Text);
        DateTime t2 = Convert.ToDateTime(textBox2.Text);
        TimeSpan ts = t1.Subtract(t2);
于 2012-05-08T14:01:14.833 回答
6

您可以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;
于 2012-05-08T14:02:08.263 回答
5

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

于 2012-05-08T14:00:39.523 回答
3

使用 TimeSpan,无需使用日期

var start = TimeSpan.Parse(start.Text);
var end = TimeSpan.Parse(end.Text);

TimeSpan result = end - start;
var diffInMinutes = result.TotalMinutes();
于 2012-05-08T14:04:11.260 回答
1
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
于 2012-05-08T14:00:39.367 回答
1

使用时间跨度:

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

    TimeSpan result = dt2 - dt1;

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

于 2012-05-08T14:02:39.110 回答
0

将小时转换为分钟,将其添加到现有分钟,将其转换为总秒数,对 endtime 执行相同操作。将它们彼此减去,将它们转换回小时和分钟。记住一小时内的 60 分钟,一分钟内的 60 秒,我就是这样处理它的。因为总秒数总是相同的,所以很难教计算机尝试从 60 回绕到 0 或从 12 回绕到 1。更容易使用像秒这样完全线性的东西。然后向上重新转换

于 2012-05-08T14:00:37.377 回答
0

您可以减去两个DateTimes 并接收一个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;
于 2012-05-08T14:03:49.987 回答