【问题标题】:checkinf if date is real using php使用php检查日期是否真实
【发布时间】:2014-07-09 22:14:06
【问题描述】:

我正在尝试检查一个日期是否真实,它必须返回 true,如果不是,它必须返回 false。

当我写 35-02-2012(日期格式 dd-mm-yy)时它似乎不起作用,它返回 true,但我期待 false,我不知道我错在哪里。

下面是我的功能

function isItRealDate($date) {
    if ($date == '') {
        return false;
    } else {

        $rxDatePattern = '/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/'; //Declare Regex
        $dtArray = preg_match($rxDatePattern, $date); // is format OK?
        if ($dtArray == '0') {
            return false;
        } else {

            $tableau_date = explode('-', $date);
            //Checks for dd-mm-yyyy format.
            $dtMonth = $tableau_date[1];
            $dtDay = $tableau_date[0];
            $dtYear = $tableau_date[2];

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

任何帮助将不胜感激

【问题讨论】:

标签: php validation date


【解决方案1】:

如果您想要一些刚刚好的东西,请使用checkdate()

【讨论】:

  • 顺便说一句,您发布的代码在我的机器上运行正常。 2012 年 2 月 35 日返回 false
  • 我不知道它存在,感谢您的回答,它确实对我有帮助。我找了很久,很简单。愿上帝眷顾你
【解决方案2】:

按照易卜拉欣的建议,使用:

function isItRealDate($date) {
  if(preg_match("@^(\d{1,2})\-(\d{1,2})\-(\d{1,4})$@", $date, $match)){
    //regex could match 99-99-9999 - checkdate will take care. 
    return checkdate($match[2], $match[1], $match[3]);
  }
  return false;
}

这适用于1-1-131-12-9999 之间的任何(有效)日期

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2015-12-19
    • 2011-12-27
    • 2011-12-26
    相关资源
    最近更新 更多