日期验证问题

原创 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; 

验证日期的Java正则表达式

闲着没事的时候,写了个验证日期的正则表达式,弄了大半天,头都大了。由于使用到了反向预搜索模式“(?下面是源代码:import java.util.regex.Matcher;import java.u...
  • bao110908
  • bao110908
  • 2008年02月29日 14:20
  • 18878

验证日期的正则表达式比较全面地验证

 1.验证日期的正则表达式加入闰年的判断以及思路分析进入正题之前,我们需要澄清两个概念:一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释。这里采纳MSDN中的约定:DateTime ...
  • aking8736
  • aking8736
  • 2008年07月31日 21:35
  • 26333

java日期有效性验证

 private static boolean isValidDate(String strValue ) {//20091001字符串         int d = Integer.parseIn...
  • jifeijixufly
  • jifeijixufly
  • 2009年12月28日 11:11
  • 1198

js 日期有效性验证 的一点思考

在日常项目中经常遇到日期输入验证,以前我遇到的项目是日期只能通过日历控件来选择,最近我同事遇到一个问题是日期除了可以通过日历控件来输入也可以手动来输入,可是我们项目中居然没有日期格式的验证方法(备注:...
  • dz45693
  • dz45693
  • 2016年06月12日 21:50
  • 764

jquery 日期比较 以及日期校验

var dateReg = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/ ;   extakeOverTime = “2017/1/5”;     if(!dateRe...
  • flymoringbird
  • flymoringbird
  • 2017年01月05日 20:54
  • 542

验证日期时间的正则表达式

^((/d{2}(([02468][048])|([13579][26]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9...
  • hzfu007
  • hzfu007
  • 2007年10月16日 15:34
  • 2959

ASP.NET MVC4 validate验证DateTime 类型 不可提交

近期在使用MVC4开发项目的时候,遇到一个比较奇特的bug,就是在用mvc4 自带的validate.js验证DateTime的时候不能通过,总是弹出一个日期控件,如图   经过反复检测,我发现了问题...
  • writtyflame
  • writtyflame
  • 2013年10月30日 13:58
  • 1159

js自定义validate验证:验证日期是否在某一范围内

需求:验证日志是否在30天(天数可以任意设置)之前 代码:form表单中的代码如下 选择日期: ...
  • lyf_vrl
  • lyf_vrl
  • 2017年10月15日 10:53
  • 345

javascript验证给定的日期的合法性

//验证给定的日期是否合法   ,参数格式要求:yyyy-mm-dd 可以根据情况更改正则表达式function isDate(oStartDate){    //对日期格式进行验证 要求为2000-...
  • precipitant
  • precipitant
  • 2005年12月28日 08:57
  • 5152

Asp.net中CompareValidator控件中的验证日期问题

众所周知,asp.net封装了很多验证控件,这些控件可以在客户端很方便地进行一些验证,无需发送到...
  • u010185292
  • u010185292
  • 2014年11月08日 12:04
  • 301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:日期验证问题
举报原因:
原因补充:

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