如何使用jquery以此格式验证日期(yyyy-mm-dd)? [英] How do I validate a date in this format (yyyy-mm-dd) using jquery?

查看:206
本文介绍了如何使用jquery以此格式验证日期(yyyy-mm-dd)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图以这种格式验证日期:(yyyy-mm-dd)。我找到了这个解决方案,但它的格式与我需要的格式不同,如:(mm / dd / yyyy)。

I am attempting to validate a date in this format: (yyyy-mm-dd). I found this solution but it is in the wrong format for what I need, as in: (mm/dd/yyyy).

以下是该解决方案的链接: http://jsfiddle.net/ravi1989/EywSP/848/

Here is the link to that solution: http://jsfiddle.net/ravi1989/EywSP/848/

我的代码如下:

function isDate(txtDate)
{
    var currVal = txtDate;
    if(currVal == '')
        return false;

    var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; //Declare Regex
    var dtArray = currVal.match(rxDatePattern); // is format OK?

    if (dtArray == null) 
        return false;

    //Checks for mm/dd/yyyy format.
    dtMonth = dtArray[1];
    dtDay= dtArray[3];
    dtYear = dtArray[5];        

    if (dtMonth < 1 || dtMonth > 12) 
        return false;
    else if (dtDay < 1 || dtDay> 31) 
        return false;
    else if ((dtMonth==4 || dtMonth==6 || dtMonth==9 || dtMonth==11) && dtDay ==31) 
        return false;
    else if (dtMonth == 2) 
    {
        var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
        if (dtDay> 29 || (dtDay ==29 && !isleap)) 
                return false;
    }
    return true;
}

我可以使用哪种正则表达式模式来解释无效日期和飞跃年?

What regex pattern can I use for this that will account for invalid dates and leap years?

推荐答案

我稍微扩展了上面发布的isValidDate函数Thorbin(使用正则表达式)。我们使用正则表达式来检查格式(以防止我们获得另一种对Date有效的格式)。在这个松散检查之后,我们实际上通过Date构造函数运行它,如果在这种格式下有效,则返回true或false。如果它不是有效日期,我们将从此函数中获取错误。

I expanded just slightly on the isValidDate function Thorbin posted above (using a regex). We use a regex to check the format (to prevent us from getting another format which would be valid for Date). After this loose check we then actually run it through the Date constructor and return true or false if it is valid within this format. If it is not a valid date we will get false from this function.

function isValidDate(dateString) {
  var regEx = /^\d{4}-\d{2}-\d{2}$/;
  if(!dateString.match(regEx)) return false;  // Invalid format
  var d = new Date(dateString);
  if(Number.isNaN(d.getTime())) return false; // Invalid date
  return d.toISOString().slice(0,10) === dateString;
}


/* Example Uses */
console.log(isValidDate("0000-00-00"));  // false
console.log(isValidDate("2015-01-40"));  // false
console.log(isValidDate("2016-11-25"));  // true
console.log(isValidDate("1970-01-01"));  // true = epoch
console.log(isValidDate("2016-02-29"));  // true = leap day
console.log(isValidDate("2013-02-29"));  // false = not leap day

这篇关于如何使用jquery以此格式验证日期(yyyy-mm-dd)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆