Untitled

 avatar
unknown
plain_text
2 months ago
1.1 kB
4
Indexable
function isValidDate(str) {
  // STRING FORMAT yyyy-mm-dd
  if (str == "" || str == null || str.length != 10) {
    return false;
  }

  // m[1] is year 'YYYY' * m[2] is month 'MM' * m[3] is day 'DD'
  var m = str.match(/(\d{4})-(\d{2})-(\d{2})/);

  // STR IS NOT FIT m IS NOT OBJECT
  if (m === null || typeof m !== "object") {
    return false;
  }

  // CHECK m TYPE
  if (typeof m !== "object" && m !== null && m.size !== 3) {
    return false;
  }

  var ret = true; //RETURN VALUE
  var thisYear = new Date().getFullYear(); //YEAR NOW
  var minYear = 1999; //MIN YEAR

  // YEAR CHECK
  if (m[1].length < 4 || m[1] < minYear || m[1] > thisYear) {
    ret = false;
  }
  // MONTH CHECK
  if (m[2].length < 2 || m[2] < 1 || m[2] > 12) {
    ret = false;
  }
  // DAY CHECK
  if (
    m[3].length < 2 ||
    m[3] < 1 ||
    (["04", "06", "09", "11"].indexOf(m[2]) > -1 && m[3] > 30) ||
    m[3] > 31
  ) {
    ret = false;
  }
  // FEBRUARY CHECK
  if ((m[2] == 2 && m[3] > 29) || (m[2] == 2 && m[3] > 28 && m[1] % 4 != 0)) {
    ret = false;
  }

  return ret;
}
Leave a Comment