日期验证问题

原创 2005年03月01日 14:11:00
晴天 日期验证问题...(正则表达式加javascript)    [ 日期:2004-04-05 ]   [ 来自:dotnet中华网 ][收藏此页]

程序代码:
1.使用日期选择器,很多朋友做了日期选择器,光我都提供了两个,我觉得这种方法是最好的,因为免去了判断日期的问题. 

2.使用.net自带的验证控件,呵呵,是使用正则表达式,我觉得是不完善的,比如2月份不可能存在31,30号. 

3.javascript脚本做判断,下面是本人花了一个钟头写的日期验证,是比较完善的验证,可以判断闰年等,里面有两个主要函数,其中checkdate是判断日期,比如 2002-02-09 ,checkdate是判断带时间日期,比如2002-02-09 12:09:09, 做验证的时候,比如确定按钮为Button1,应在Page_Load函数加上Button1.Attributes.Add("onclick","return ('txt_Date');"); 



js文件代码: 


____________________________________________________________________________________ 


function fob(n, d) 

   var p,i,x;if(!d) d=document; 
   if((p=n.indexOf("?"))>0&&parent.frames.length)  
   { 
       d=parent.frames[n.substring(p+1)].document; 
       n=n.substring(0,p); 
   } 
   if(!(x=d[n])&&d.all)  
   x=d.all[n]; 
   for (i=0;!x&&i<d.forms.length;i++)  
   x=d.forms[i][n]; 
   for(i=0;!x&&d.layers&&i<d.layers.length;i++)  
   x=fob(n,d.layers[i].document);  
   return x; 
}  
function checkdate(inpar) 

 var flag=true;  
 getdate=fob(inpar).value; 
 if (getdate.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[1-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])$/)==-1) // 判断输入格式时候正确 
 { 
   flag=false; 
 } 
 else 
 { 
   var year=getdate.substr(0,getdate.indexOf('-'))  // 获得年 
   // 下面操作获得月份 
   var transition_month=getdate.substr(0,getdate.lastIndexOf('-'));  
   var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length); 
   if (month.indexOf('0')==0) 
   { 
      month=month.substr(1,month.length); 
   } 
   // 下面操作获得日期 
   var day=getdate.substr(getdate.lastIndexOf('-')+1,getdate.length); 
   if (day.indexOf('0')==0) 
   { 
      day=day.substr(1,day.length); 
   } 
   flag=true; 
 } 
 if ((month==4 || month==6 || month==9 || month==11) && (day>30)) // 4,6,9,11月份日期不能超过30 
 {  
     flag=false;  
 } 
 if (month==2)  // 判断2月份 
 { 
   if (LeapYear(year)) 
   { 
      if (day>29 || day<1){ flag=false; } 
   } 
   else 
   { 
      if (day>28 || day<1){flag=false; } 
   } 

else 

   flag=true; 


if (flag==false) 

   alert("您输入的日期不合法!"); 
   return false; 





function checktime(inpar) 

 var flag=true;  
 getdate=fob(inpar).value; 
 if (getdate.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[1-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1]) ((0[1-9]|[1-9])|1[0-9]|2[0-4]):((0[1-9]|[1-9])|[1-5][0-9]):((0[1-9]|[1-9])|[1-5][0-9])$/)==-1) // 判断输入格式时候正确 
 { 
   flag=false; 
 } 
 else 
 { 
   var year=getdate.substr(0,getdate.indexOf('-'))  // 获得年 
   // 下面操作获得月份 
   var transition_month=getdate.substr(0,getdate.lastIndexOf(' '));  
   transition_month=getdate.substr(0,getdate.lastIndexOf('-'));  
   var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length); 
   if (month.indexOf('0')==0) 
   { 
      month=month.substr(1,month.length); 
   } 
   // 下面操作获得日期 
   var transition_day=getdate.substr(0,getdate.lastIndexOf(' '));  
   var day=transition_day.substr(transition_day.lastIndexOf('-')+1,transition_day.length); 
   if (day.indexOf('0')==0) 
   { 
      day=day.substr(1,day.length); 
   } 
   flag=true; 
 } 
 if ((month==4 || month==6 || month==9 || month==11) && (day>30)) // 4,6,9,11月份日期不能超过30 
 {  
     flag=false;  
 } 
 if (month==2)  // 判断2月份 
 { 
   if (LeapYear(year)) 
   { 
      if (day>29 || day<1){ flag=false; } 
   } 
   else 
   { 
      if (day>28 || day<1){flag=false; } 
   } 

else 

   flag=true; 


if (flag==false) 

   alert("您输入的日期不合法!"); 
   return false; 



//判断是否闰年 
//参数      intYear 代表年份的值 
//return   true: 是闰年   false: 不是闰年 
function LeapYear(intYear) { 
   if (intYear % 100 == 0) { 
      if (intYear % 400 == 0) { return true; } 
   } 
   else { 
      if ((intYear % 4) == 0) { return true; } 
   } 
   return false; 

相关文章推荐

Excel中日期格式转换问题

  • 2011年12月22日 15:10
  • 272KB
  • 下载

Tomcat下使用Log4j,按日期每天存放,解决catalina.out日志文件过大问题

1. 准备jar包:     log4j-1.2.17.jar (从 http://www.apache.org/dist/logging/log4j/1.2.17/ 下载)     to...
  • dyq51
  • dyq51
  • 2017年05月08日 11:50
  • 1089

GridView中日期时间显示格式问题

  • 2008年02月02日 09:30
  • 39KB
  • 下载

通过自定义MVC的Controller的Json转换器解决日期序列化格式问题

今日,在MVC框架下使用EasyUI的datagrid加载数据时,服务端返回的Json日期格式为 /Date(1433088000000+0800)/ ,需要客户端进一步转换,而且也不符合EasyUI...
  • mole
  • mole
  • 2015年07月13日 11:02
  • 2134

SQL Server中日期问题的解决

  • 2009年02月26日 12:38
  • 492B
  • 下载

规则引擎中对日期的设置问题

  • 2013年02月03日 13:38
  • 108KB
  • 下载

编程珠玑第三章—习题4(日期问题)

问题1:给定两个日期,计算两者之间的天数。 解答:可以现将月和日换算成该年的第多少天,用后者减去前者,然后年份差距乘以365,同时考虑到两个年份之间闰年的个数,如果闰年个数为n,则最后结果再加上n. ...

C语言日期的计算问题

  • 2014年04月01日 20:35
  • 25KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:日期验证问题
举报原因:
原因补充:

(最多只允许输入30个字)