为了账号安全,请及时绑定邮箱和手机立即绑定

如何验证日期?

如何验证日期?

茅侃侃 2019-07-02 11:07:40
如何验证日期?我试着测试,以确保一个日期是有效的,如果有人进入2/30/2011那就错了。我怎么能在任何约会中做到这一点?
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

验证日期字符串的一种简单方法是将日期对象转换为日期对象并对其进行测试。


// Expect input as d/m/y

function isValidDate(s) {

  var bits = s.split('/');

  var d = new Date(bits[2], bits[1] - 1, bits[0]);

  return d && (d.getMonth() + 1) == bits[1];

}


['0/10/2017','29/2/2016','01/02'].forEach(function(s) {

  console.log(s + ' : ' + isValidDate(s))

})

以这种方式测试日期时,只需要测试月份,因为如果日期超出范围,则月份将发生更改。如果这个月超出范围的话,情况也是一样的。任何一年都是有效的。


还可以测试日期字符串的位数:


function isValidDate2(s) {

  var bits = s.split('/');

  var y = bits[2],

    m = bits[1],

    d = bits[0];

  // Assume not leap year by default (note zero index for Jan)

  var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];


  // If evenly divisible by 4 and not evenly divisible by 100,

  // or is evenly divisible by 400, then a leap year

  if ((!(y % 4) && y % 100) || !(y % 400)) {

    daysInMonth[1] = 29;

  }

  return !(/\D/.test(String(d))) && d > 0 && d <= daysInMonth[--m]

}


['0/10/2017','29/2/2016','01/02'].forEach(function(s) {

  console.log(s + ' : ' + isValidDate2(s))

})


查看完整回答
反对 回复 2019-07-02
  • 2 回答
  • 0 关注
  • 364 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信