Php 为比较日期和今天的日期而编写的代码中有什么问题?

Php 为比较日期和今天的日期而编写的代码中有什么问题?,php,date,comparison,date-comparison,Php,Date,Comparison,Date Comparison,我在比较一个日期和当前日期。今天的日期。预计只有当要比较的日期大于今天的日期时,才会出现错误。它不应该出现在小于或等于今天日期的日期 我已经为此编写了以下代码 $submission_date = $_POST['submission_date']; //The date in mm-dd-yyyy format that is to be tested against today's date. The value in $submission date is 12-25-2014 //Th

我在比较一个日期和当前日期。今天的日期。预计只有当要比较的日期大于今天的日期时,才会出现错误。它不应该出现在小于或等于今天日期的日期

我已经为此编写了以下代码

$submission_date = $_POST['submission_date']; //The date in mm-dd-yyyy format that is to be tested against today's date. The value in $submission date is 12-25-2014 
//This is a future date. Today's date is 12-10-2014 in dd-mm-yyyy format

$current_date = date('m-d-Y');

if (strtotime($submission_date) > strtotime($current_date))
{
   echo "Future date not accepted";
}
使用上面的代码,我不会在将来的日期出现错误,有时我也会在以前的日期出现错误


如何优化并使此代码正确和标准?

我认为您需要以“Y-m-d”或“d-m-Y”格式比较日期。我认为不可能以“m-d-Y”格式比较日期,因为我们对您的代码进行了更改,并且我们从我的角度测试了它的工作原理,所以您可以在下面进行尝试

$submission_date = $_POST['submission_date'];
$current_date = date('d-m-y H:i:s');
if (strtotime($submission_date) > strtotime($current_date))
{
   echo "Future date not accepted";
}
希望这能有所帮助。

如果发布的格式是m-d-Y格式,那么您不能使用strotime函数直接将其转换为unix时间戳,因为它是

如果您需要使用strotime,那么

另一方面,您可以使用类,在该类中可以直接比较对象:

$submission\u date=DateTime::createFromFormat'!m-d-Y',$提交日期; $today_date=新日期时间'today'; 如果$submission\u date>$today\u date{ 回送提交\u日期在将来\n; } 如果需要从DateTime对象提取某些信息,请对其使用方法,该方法接受与函数相同的格式:

echo$today_date->format'm/d/Y';12/11/2014 echo$today_date->format'm-d-Y';12-11-2014 echo$today_date->格式为“Y-m-d”;2014-12-11 echo$today_date->格式为'Y-Y-Y';2014-2014-2014
这无法工作,因为提交日期为mm dd yyyy格式。PHP将假定它是dd-mm-yyyy,因为它有破折号。因此,如果提交日期是12月10日,strotime将返回10月12日的unix时间戳。提供有用信息的完美答案。非常感谢您提供的帮助和分享的知识。当然,这将使PHP社区受益。再次感谢。