2012-05-08 37 views
9

在我的应用程序中,我有4个文本框,2个文本框输入开始时间,2个文本框输入结束时间。获取两个值之间的时间差

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

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

+0

东西[这里](http://stackoverflow.com/问题/ 2821040 /怎么办-I-GET-的时间差,二,日期时间,对象,使用-C间)。 – RBT

回答

14

使用TimeSpan类和DateTime的Subtract方法。

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

这效果很好,但结果是02:30:00,是否有可能删除秒,所以它会显示像这样的2:30? – PandaNL

+1

@PandaNL:使用'.ToString(“hh:mm”)''等格式修饰符。 – Skalli

+0

如果你只用时间,你应该使用'TimeSpan'而不是'DateTime'。 –

0

将小时数转换为分钟数,将其添加到现有分钟数,将其转换为总秒数,然后对endtime执行相同操作。将它们彼此减去,将它们转换回几小时和几分钟。记得一小时60分钟,一分钟60秒,那我该如何处理它。因为总秒数总是相同的,所以它很难教导一台计算机试图从60回到0或从12回到1.更容易使用像秒那样的完美线性。然后再转向上

+0

,因为你可以看到更多的自己做逻辑,所以对我来说更容易理解,而不是所有其他人只是做日期时间... xD – RhysW

+1

这是imho过于复杂,TimeSpan对用户来说更容易和更安全。 – Skalli

+0

即时通讯从我的老导师给我提出挑战,我们不得不使用内置的函数来更好地理解它是如何工作的,并且教会我们更合乎逻辑,仍然没有伤心地打破这种习惯 – RhysW

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

创建两个DateTime对象解析值在TextBox控制和简单的减法两个DateTime,你会得到一个TimeSpan对象,它是你在找什么。

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; 
1

使用时间跨度:

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

    TimeSpan result = dt2 - dt1; 

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

0

您可以减去两个DateTime s并收到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; 
3

使用时间跨度,没有必要使用日期类似

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

TimeSpan result = end - start; 
var diffInMinutes = result.TotalMinutes(); 
相关问题