2

如何确定 mytextbox中的值是否正确date

例如: 这是我的文本框中日期的值:01/32/2013

我知道这是错误的日期值,但我如何确定它是错误的格式?我可以通过使用来避免这种情况try and catch,但我不想使用它,如果我在我的问题中找不到解决方案,我会使用它。

<asp:TextBox ID="txtMEditStartDt" runat="server" Text='<%# Bind("StartDt", "{0:MM/dd/yyyy}") %>'
    CssClass="datePicker" SkinID="textSkin" Width="100px"></asp:TextBox>
<asp:MaskedEditExtender ID="MaskedEditStartDt" runat="server"
    TargetControlID="txtMEditStartDt" Mask="99/99/9999" MaskType="Date" 
    CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
    CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
    CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True"/>
<asp:CalendarExtender ID="calendarEditStartDt" runat="server" TargetControlID="txtMEditStartDt" Format="MM/dd/yyyy">
</asp:CalendarExtender>
4

3 回答 3

4

为什么不使用 Calander 控件将数据放入文本框中,而不是允许用户输入日期。这将确保用户不会输入错误的数据值,因为用户只需要从 calander 控件中选择日期

或者

如果您知道数据格式,那么您可以这样做

string dateTimeString = "28/08/2012";
DateTime date;
if(DateTime.TryParseExact(dateTimeString, 
   "dd/MM/yyyy", CultureInfo.InvariantCulture,DateTimeStyles.None, 
    out date))
 {
    //code to process valid date
 }

如果不是有效日期,则返回错误值,这样您可以验证您的日期数据

于 2013-01-14T08:01:44.680 回答
3

您可以使用DateTime.TryParse方法。在这种方法中使用的是当前的应用文化。所以在失败的情况下,它会简单地返回false

DateTime dateValue = default(DateTime);
if (DateTime.TryParse(dateString, out dateValue)) 
   //SUCCESS 
else 
  //FAILURE
于 2013-01-14T08:01:10.250 回答
2
DateTime dt;

if(DateTime.TryParse("01/32/2013",out dt)){


  //do stuff;
}
于 2013-01-14T08:02:01.450 回答