如果日期大于..在PHP中无法正常工作

时间:2011-11-01 15:09:00

标签: php

  

可能重复:
  PHP: Date larger than current date

我的日期格式为:dd-mm-yyyy

现在根据php,28-06-2011大于01-11-2011

$today = date('d-m-Y', time());

if("28-06-2011" > $today ){
     echo "This returns true";
}

我如何正常运作?

5 个答案:

答案 0 :(得分:3)

您无法比较那样的日期。他们是两个字符串。 PHP将尝试将它们解释为数字(取前两位数,然后由于-而失败)并进行比较。结果证明这是不正确的。确实可以使用YYYY-MM-DD>来比较<类型字符串。

所以请参阅Col. Shrapnel's answer并更改日期格式 - 无论如何它都有意义。如果你不能这样做(因为它是用户输入的日期或其他),你可以创建两个DateTime对象,由于PHP 5魔法,你也可以这样比较:

$date1 = new DateTime('2000-01-01');
$date2 = new DateTime('2001-01-01');

if ($date1 > $date2)... // this works

答案 1 :(得分:1)

if(strtotime("28-06-2011") > time()) {
}

答案 2 :(得分:1)

  

我的日期格式为:dd-mm-yyyy

这就是你错了。
你不应该在这个firmat中有你的约会。将它们放在 yyyy-mm-dd 中,您就可以毫无问题地对它们进行比较。

答案 3 :(得分:-1)

您无法将日期与字符串进行比较。 创建另一个类似于今天变量的日期项目,其固定日期为28-06-2011,然后比较2个对象。 $ datetocompare = date(“d-m-Y”,mktime(0,0,0,28,06,2011));

if($ datetocompare&gt; $ today){} 这将有效。

来源:http://uk.php.net/manual/en/function.date.php

答案 4 :(得分:-1)

如果你这样做,你实际上是在比较字符串,而不是日期。要正确比较日期,您需要将日期值/字符串转换为time stamps,您可以使用strtotime函数来完成此任务。

以下链接包含更多信息:http://php.net/manual/en/function.strtotime.php