TotalHours函数错误处理

时间:2014-02-24 23:59:41

标签: c# asp.net

我每周的每一天都有两个文本框,允许用户以这种格式输入开始时间和结束时间(hh:mm)(24小时制)。例如,如果用户在星期一的第一个文本框中输入1:35,在星期一的第二个文本框中输入3:30,则按“计算”按钮,它将返回小数1.92。它运行并将结果返回给标签,但我的错误处理有问题。

如果文本框保留为空,则在运行时会抛出错误并显示“字符串未被识别为有效的TimeSpan”。我如何解决这个问题,如果用户没有输入时间,它会假定为'0'或者不运行具有该特定空文本框的代码?

//Monday
TimeSpan Mon1In = TimeSpan.Parse(TextBoxInMon1.Text);
TimeSpan Mon1Out = TimeSpan.Parse(TextBoxOutMon1.Text);
MonLabel1.Text = (Mon1Out - Mon1In).TotalHours.ToString("f2");

//Tuesday
TimeSpan Tues1In = TimeSpan.Parse(TextBoxInTues1.Text);
TimeSpan Tues1Out = TimeSpan.Parse(TextBoxOutTues1.Text);
TuesLabel1.Text = (Tues1Out - Tues1In).TotalHours.ToString("f2");

//Wednesday
TimeSpan Wed1In = TimeSpan.Parse(TextBoxInWed1.Text);
TimeSpan Wed1Out = TimeSpan.Parse(TextBoxOutWed1.Text);
WedLabel1.Text = (Wed1Out - Wed1In).TotalHours.ToString("f2");

一直到星期五。

1 个答案:

答案 0 :(得分:1)

你应该使用TimeSpan.TryParseMSDN,其中out param是你想要的值,如果tryparse失败,你将TimeSpan设置为00:00:00。

//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");