【发布时间】:2014-01-28 20:50:23
【问题描述】:
我对 TimeSpan 类有一个小问题,它可以解析 23:59 但不能解析 24:00。
当然,客户希望输入 24:00 来表示一天的结束,而不是 23:59 或 00:00,因为 00:00 表示一天的开始。
目前我的代码会像这样解析结束时间:
if ( !TimeSpan.TryParse( ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text, out tsTimeOff ) )
{
this.ShowValidationError( String.Format( "Please enter a valid 'Time Off' on row '{0}'.", gvr.RowIndex + 1 ) );
return false;
}
对于这种情况最好的解决方法是什么?
编辑:(解决方案 1)
if ( ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text == "24:00" )
{
tsTimeOff = new TimeSpan( 24, 0, 0 );
}
else
{
if ( !TimeSpan.TryParse( ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text, out tsTimeOff ) )
{
this.ShowValidationError(
String.Format( "Please enter a valid 'Time Off' on row '{0}'.", gvr.RowIndex + 1 ) );
return false;
}
}
编辑:(解决方案2)
string timeOff = ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text;
if ( !TimeSpan.TryParse(
timeOff == "24:00" ? "1.00:00:00" : timeOff
, out tsTimeOff ) )
{
this.ShowValidationError(
String.Format( "Please enter a valid 'Time Off' on row '{0}'.", gvr.RowIndex + 1 ) );
return false;
}
【问题讨论】:
-
您可以简单地将字符串“24:00”作为特殊情况处理..
-
@codymanix - 谢谢,我会尝试建议的两个选项