一个判断日期时间格式的JavaScript代码

http://blog.csdn.net/Ivy_zheng/article/details/5311459

一个判断日期时间格式的JavaScript代码

作者:最后一只恐龙

    在ASP.NET中,经常遇到输入日期时间的情况,这段代码主要用来判断日期和时间是不是合法。日期格式为第一个函数IsDate(strDate),支持yyyy-MM-dd和yyyy-M-d两种形式;日期时间为第二个函数IsDateTime(strDateTime),支持yyyy-MM-dd HH:mm:ss和yyyy-M-d H:m:s两种形式。

    日期格式考虑了闰年的情况,代码中有注释,自己看吧。

    把附件中的代码拷贝下来存到文件中,命名为DateTime.js,假设放到源码的js目录下。在ASP.NET中有文本框tbStartDate和tbEndDate输入两个日期,可以这样使用:

  

  1. <mce:script type="text/javascript" src="../Js/DateTime.js" mce_src="Js/DateTime.js"><!-- 
  2.     function IsDateCorrect() 
  3.     { 
  4.         if (!IsDate(document.getElementById("<%=tbStartDate.ClientID %>").value)) 
  5.         { 
  6.             alert("起始时间格式不正确!"); 
  7.             return false
  8.         } 
  9.         if (!IsDate(document.getElementById("<%=tbEndDate.ClientID %>").value)) 
  10.         { 
  11.             alert("终止时间格式不正确!"); 
  12.             return false
  13.         } 
  14.         return true
  15.     } 
  16.  
  17. -></mce:script> 

   

     然后在相应按钮的OnClientClick中加入“return IsDateCorrect();”,这样如果输入日期错误,就不会进入该按钮的后台代码了。

     附:判断日期时间的Javascript代码

[javascript] view plain copy print ?
  1. /*********************************************************************
  2. * 判断字符串strDate是否为一个正确的日期格式:
  3. * yyyy-M-d或yyyy-MM-dd
  4. * 编写人:郑艳伟
  5. * *******************************************************************/ 
  6. function IsDate(strDate) 
  7.     // 先判断格式上是否正确 
  8.     var regDate = /^(/d{4})-(/d{1,2})-(/d{1,2})$/; 
  9.     if (!regDate.test(strDate)) 
  10.     { 
  11.         return false
  12.     } 
  13.      
  14.     // 将年、月、日的值取到数组arr中,其中arr[0]为整个字符串,arr[1]-arr[3]为年、月、日 
  15.     var arr = regDate.exec(strDate); 
  16.      
  17.     // 判断年、月、日的取值范围是否正确 
  18.     return IsMonthAndDateCorrect(arr[1], arr[2], arr[3]); 
  19.  
  20. /*********************************************************************
  21. * 判断字符串strDateTime是否为一个正确的日期时间格式:
  22. * yyyy-M-d H:m:s或yyyy-MM-dd HH:mm:ss
  23. * 时间采用24小时制
  24. * 编写人:郑艳伟
  25. * *******************************************************************/ 
  26. function IsDateTime(strDateTime) 
  27.     // 先判断格式上是否正确 
  28.     var regDateTime = /^(/d{4})-(/d{1,2})-(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/; 
  29.     if (!regDateTime.test(strDateTime)) 
  30.         return false
  31.          
  32.     // 将年、月、日、时、分、秒的值取到数组arr中,其中arr[0]为整个字符串,arr[1]-arr[6]为年、月、日、时、分、秒 
  33.     var arr = regDateTime.exec(strDateTime); 
  34.      
  35.     // 判断年、月、日的取值范围是否正确 
  36.     if (!IsMonthAndDateCorrect(arr[1], arr[2], arr[3])) 
  37.         return false
  38.          
  39.     // 判断时、分、秒的取值范围是否正确 
  40.     if (arr[4] >= 24) 
  41.         return false
  42.     if (arr[5] >= 60) 
  43.         return false
  44.     if (arr[6] >= 60) 
  45.         return false
  46.      
  47.     // 正确的返回 
  48.     return true
  49.  
  50. // 判断年、月、日的取值范围是否正确 
  51. function IsMonthAndDateCorrect(nYear, nMonth, nDay) 
  52.     // 月份是否在1-12的范围内,注意如果该字符串不是C#语言的,而是JavaScript的,月份范围为0-11 
  53.     if (nMonth > 12 || nMonth <= 0) 
  54.         return false
  55.  
  56.     // 日是否在1-31的范围内,不是则取值不正确 
  57.     if (nDay > 31 || nMonth <= 0) 
  58.         return false
  59.      
  60.     // 根据月份判断每月最多日数 
  61.     var bTrue = false
  62.     switch(nMonth) 
  63.     { 
  64.         case 1: 
  65.         case 3: 
  66.         case 5: 
  67.         case 7: 
  68.         case 8: 
  69.         case 10: 
  70.         case 12: 
  71.             bTrue = true;    // 大月,由于已判断过nDay的范围在1-31内,因此直接返回true 
  72.             break
  73.         case 4: 
  74.         case 6: 
  75.         case 9: 
  76.         case 11: 
  77.             bTrue = (nDay <= 30);    // 小月,如果小于等于30日返回true 
  78.             break
  79.     } 
  80.      
  81.     if (!bTrue) 
  82.         return true
  83.      
  84.     // 2月的情况 
  85.     // 如果小于等于28天一定正确 
  86.     if (nDay <= 28) 
  87.         return true
  88.     // 闰年小于等于29天正确 
  89.     if (IsLeapYear(nYear)) 
  90.         return (nDay <= 29); 
  91.     // 不是闰年,又不小于等于28,返回false 
  92.     return false
  93.  
  94. // 是否为闰年,规则:四年一闰,百年不闰,四百年再闰 
  95. function IsLeapYear(nYear) 
  96.     // 如果不是4的倍数,一定不是闰年 
  97.     if (nYear % 4 != 0) 
  98.         return false
  99.     // 是4的倍数,但不是100的倍数,一定是闰年 
  100.     if (nYear % 100 != 0) 
  101.         return true
  102.      
  103.     // 是4和100的倍数,如果又是400的倍数才是闰年 
  104.     return (nYear % 400 == 0); 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值