PHP:从用户输入验证日期

PHP:从用户输入验证日期,php,validation,exception,if-statement,Php,Validation,Exception,If Statement,在我的应用程序中,用户输入一个日期(如果他想指定小时和分钟),该日期保存在如下变量中: $userdate = new dateTime($dateraw); 现在我想检查输入是否有效,以下机会应该是可能的: 2015年1月20日12:00 2015-01-20 12:00 检查用户提交的日期和月份是否有效也是非常重要的 有效日期=一个数字,但不超过31 有效月份=一个数字,但不超过12 我试过类似的东西 if ($userdate->format('%a') > 31 ) { e

在我的应用程序中,用户输入一个日期(如果他想指定小时和分钟),该日期保存在如下变量中:

$userdate = new dateTime($dateraw);
现在我想检查输入是否有效,以下机会应该是可能的:

2015年1月20日12:00
2015-01-20 12:00

检查用户提交的日期和月份是否有效也是非常重要的

有效日期=一个数字,但不超过31
有效月份=一个数字,但不超过12

我试过类似的东西

if ($userdate->format('%a') > 31 ) {
echo "Your day input is not valid.";
}

简单的修复方法是在try…catch中包装新的DateTime(),因为这将捕获任何无法正确解析的内容。它不能提供他们输入错误的细节,例如:月>12天或天>31天。就个人而言,我想知道为什么您首先要允许多种格式。在使用日期格式时,有很多注意事项,如果不阅读文档,这些日期格式就不明显。选择一种格式,它将使您的生活更轻松,更不容易出错,并且不会混淆用户。任何
DateTime
对象都将始终是有效的日期。在创建日期时间对象之前,您需要验证部件。或者使用datepicker类型的JS来避免直接的用户输入,这样验证就很容易了。此外,用户不能直接输入。第二种选择是对月份、日期、年时等使用单独的输入字段,因此可以非常容易地进行验证。