duanliyi5997 2014-07-09 22:14
浏览 40
已采纳

使用php检查日期是否真实

I'm trying to check if a date is real, it must return true, and if not, it must return false.

It does not seemes to work when I write 35-02-2012 (Date format dd-mm-yy) it return true, but I was expecting false, I do not know where I'm wrong.

below is my function

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;
                }
            }
        }
    }
}

anykind of help will be much appreciated

  • 写回答

2条回答 默认 最新

  • dougaopu7938 2014-07-09 22:19
    关注

    If you want something that just works, use checkdate().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表