两次跟进之间的差异(转换为十进制)

时间:2014-02-24 21:12:59

标签: c# asp.net

我之前问了这样一个问题并得到了一个很好的答案,但我犯了一个错误,希望输出是小数而不是时间。所以这就是问题。

我有两个文本框,允许用户以此格式输入开始时间和结束时间(h:mm)。我想让它返回标签中的差异。例如,如果用户在第一个文本框中输入1:35而在第二个文本框中输入3:30并按下“计算”按钮,则会返回小数点1.92。

对此有何想法或资源?我只想计算输入时间的小数差,日期和秒根本没关系。以下是以(h:mm)格式获取输出的代码。

TimeSpan ts1 = TimeSpan.Parse(textBox1.Text); //"1:35"
TimeSpan ts2 = TimeSpan.Parse(textBox2.Text); //"3:30"

label.Text = (ts2 - ts1).ToString();         //"1:55:00"

2 个答案:

答案 0 :(得分:4)

听起来你想要总小时数,而1.92小时是115分钟(ish)。

在这种情况下,您需要:

double hours = (ts2 - ts1).TotalHours;

...然后你可以根据自己的意愿格式化(例如,到2位小数)。

例如:

TimeSpan ts1 = TimeSpan.Parse("1:35");
TimeSpan ts2 = TimeSpan.Parse("3:30");
double hours = (ts2 - ts1).TotalHours;

Console.WriteLine(hours.ToString("f2")); // Prints 1.92

当然,我个人使用Noda Time并将字符串解析为LocalTime值而不是TimeSpan值,因为这就是他们的意思(一天的时间) ,但那是一个小小的狡辩;)

答案 1 :(得分:3)

(ts2 - ts1).TotalHours.ToString();
相关问题