获得两个值之间的时差

时间:2012-05-08 13:58:39

标签: c# .net datetime

在我的应用程序中,我有4个TextBoxes和2个TextBox用于输入开始时间,2个TextBox用于输入结束时间。

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

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

8 个答案:

答案 0 :(得分:15)

使用TimeSpan类和DateTime的Subtract方法。

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

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

答案 2 :(得分:5)

创建两个DateTime个对象来解析TextBox控件中的值,然后简单地减去两个DateTime,你会得到一个TimeSpan对象,这就是你要找的对象

答案 3 :(得分:3)

使用TimeSpan,无需使用日期

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

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

答案 4 :(得分: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

答案 5 :(得分:1)

使用时间跨度:

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

    TimeSpan result = dt2 - dt1;

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

您可以减去两个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;