JavaScript 判断输入的日期是否是合法日期的两种方法

原帖:孟子E章 http://dotnet.aspx.cc/file/Check-Date-Using-JavaScript.aspx

 

JavaScript 代码
// 检查输入的日期是否是一个正确的日期格式:
/
/ 支持 yyyy-M-d、yyyy-MM-dd、yyyy/M/d、yyyy/MM/dd 四种输入格式。

function checkDate(strInputDate) {
  
// 定义一个月份天数常量数组

  var DA = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];

  
// 统一日期格式

  strDate = strInputDate.replace(/-/g, "/" );

  
//判断日期是否是预期的格式

  if (strDate.indexOf("/") == -1 ) {
    alert(
"请输入 yyyy-M-d、yyyy-MM-dd、yyyy/M/d、yyyy/MM/dd 格式。"
)
    
return false
;
  }

  
// 分解出年月日

  arrD = strDate.split("/" );
  
if (arrD.length != 3) return false
;
  y
= parseInt(arrD[0], 10
);
  m
= parseInt(arrD[1], 10
);
  d
= parseInt(arrD[2], 10
);

  
//判断年月日是否是数字

  if (isNaN(y) || isNaN(m) || isNaN(d)) return false ;

  
// 判断月份是否在1-12之间

  if (m > 12 || m < 1) return false ;
  
//判断是否是闰年

  if (isLoopYear(y)) DA[2] = 29 ;

  
//判断输入的日是否超过了当月月份的总天数。

  if (d > DA[m]) return false ;

  
//各种条件都验证了,则应该是一个合法的日期了。

  // 如果要对日期进行一次格式化,则可以在这里进行处理了,下面格式化成数据库识别的日期格式 yyyy-MM-dd
  // str = y + "-" + (m<10?"0":"") + m + "-" + (d<10?"0":"") + d;
  str = y + "-" + (m < 10 ? "0" : "") + m + "-" + (d < 10 ? "0" : "") + d;
  alert(str)
  
return true
;
}
function
isLoopYear(theYear) {
  
return (new Date(theYear, 1, 29).getDate() == 29
);
}

//方法二:

//
/ 检查输入的日期是否是一个正确的日期格式:
//
/ 支持 yyyy-M-d、yyyy-MM-dd、yyyy/M/d、yyyy/MM/dd 四种输入格式。
function CheckDate2(strInputDate) {
  
if (strInputDate == "") return false
;
  strInputDate
= strInputDate.replace(/-/g, "/"
);
  
var d = new
Date(strInputDate);
  
if (isNaN(d)) return false
;
  
var arr = strInputDate.split("/"
);
  
return ((parseInt(arr[0], 10) == d.getFullYear()) && (parseInt(arr[1], 10) == (d.getMonth() + 1)) && (parseInt(arr[2], 10) ==
d.getDate()));
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值