ASP 日历为 2 月 29 日和 30 日

ASP Calendar with February 29 and 30

我有一个要求,我必须允许用户输入 2 月 29 日和 2 月 30 日作为有效日期。这是出于会计目的,这不是规范,只有特定表格才需要。

现在它是一个数字开放字段,用户手动输入日期,我们不执行任何日期验证,因为它们会失败。

有什么方法可以将这 2 天包含在 ASP 日历控件中,以便用户只需 select 就像他们通常对其他日期所做的那样? (我们在 Visual Studio 2010 年将 C# 与网络表单一起使用)。

我建议使用正则表达式验证器,

这会检查条目在 post 之前的格式是否正确。

看起来像这样

 <asp:TextBox runat="server" ID="txt_date_entry"></asp:TextBox>
 <asp:RegularExpressionValidator ID="rev_date_entry" runat="server" 
      ControlToValidate="txt_date_entry" ErrorMessage="Must be Valid Date" 
      ValidationExpression="**Expression**"  Display="Dynamic">
 </asp:RegularExpressionValidator>

将表达式替换为您希望与之比较的格式。

下面将检查任何日期格式是否正确(甚至是闰年日期),只要它在 dd/mm/yyyy 或 dd.mm.yyyy 等中。

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Google 您想要的格式的验证表达式

JavaScript 解析方法示例

   function dateValidation() 
{
   var obj = document.getElementById("<%=txtDate.ClientID%>"); 
   var day = obj.value.split("/")[0];
   var month = obj.value.split("/")[1]; 
   var year = obj.value.split("/")[2];
   if ((day<1 || day >31) || (month<1&&month>12)&&(year.length != 4)) 
   {
      alert("Invalid Format");return false; 
   }

   else

   {
      var dt = new Date(year, month-1, day); 
      var today = new Date();
      if((dt.getDate() != day) || (dt.getMonth() != month-1) ||(dt.getFullYear()!=year) || (dt>today)) 
      {
         alert("Invalid Date");return false; 
      }
   }

}