循环24小时时差

时间:2014-06-16 17:06:10

标签: c# asp.net

我创建了一个时间计算器,这样有人可以24小时时间格式在文本框中输入开始时间,在另一个文本框中输入结束时间,它将计算差异并在标签中显示。

如何使我的代码执行相同的操作,但使用循环?我只想缩短代码,而不是每周的每一天都有一段代码,如下所示只是星期一和星期二的代码。

//Monday
TimeSpan Mon1In, Mon1Out;
if (!TimeSpan.TryParse(TextBoxInMon1.Text, out Mon1In))
    Mon1In = default(TimeSpan);
if (!TimeSpan.TryParse(TextBoxOutMon1.Text, out Mon1Out))
    Mon1Out = default(TimeSpan);
MonLabel1.Text = (Mon1Out - Mon1In).TotalHours.ToString("f2");

//Tuesday
TimeSpan Tues1In, Tues1Out;
if (!TimeSpan.TryParse(TextBoxInTues1.Text, out Tues1In))
    Tues1In = default(TimeSpan);
if (!TimeSpan.TryParse(TextBoxOutTues1.Text, out Tues1Out)) 
    Tues1Out = default(TimeSpan);
TuesLabel1.Text = (Tues1Out - Tues1In).TotalHours.ToString("f2");

1 个答案:

答案 0 :(得分:2)

你可以做一个功能。这称为refactoring

private void GetTimeValues(TextBox txtIn, TextBox txtOut, 
    out TimeSpan inTime, out Timespan outTime)
{
    if (!TimeSpan.TryParse(txtIn.Text, out inTime))
        inTime = default(TimeSpan);
    if (!TimeSpan.TryParse(txtOut.Text, out outTime))
        outTime = default(TimeSpan);
}

然后调用该函数并设置标签。

TimeSpan Mon1In, Mon1Out;
GetTimeValues(TextBoxInMon1, TextBoxOutMon1, out Mon1In, out Mon1Out);
MonLabel1.Text = (Mon1Out - Mon1In).TotalHours.ToString("f2");

您应该使用更具描述性的功能名称,这只是我想到的第一件事。

您也可以在函数中包含标签逻辑,只需以相同的方式处理信息。