How do I validate a date in this format (yyyy-mm-dd) using jquery?

前端 未结 11 1325
长情又很酷
长情又很酷 2020-12-02 11:41

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).

Here is t

11条回答
  •  南方客
    南方客 (楼主)
    2020-12-02 11:51

    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);
      var dNum = d.getTime();
      if(!dNum && dNum !== 0) return false; // NaN value, 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

提交回复
热议问题