带有Date的PHP IF语句不返回False

时间:2014-07-14 11:26:11

标签: php if-statement

我正在尝试学习一点点php并且无法理解为什么2秒IF在这里执行。我有一个变量$ theDate将于2010年5月4日接受欧洲日期。

$theDate = date('d-m-Y', strtotime("04-05-2010"));
echo "$theDate<br />";

if($theDate > "02-05-2010")
{
 echo "Greater than!<br />";
}

if($theDate > "02-05-2011")
{
 echo "Why am I showing<br />";
}

echo "Endof";

我现在只想使用IF,没有IF-Else等。但是当$ theDate不大于02-05-2011时,为什么第二个IF会执行,

提前感谢,

4 个答案:

答案 0 :(得分:3)

据我记得2014年。为什么不使用DateTime object and do why not do it right way ??

$raw = '04-05-2010';
$theDate= \DateTime::createFromFormat('d-m-Y', $raw);
$raw2 = '02-05-2010';
$anotherDate = \DateTime::createFromFormat('d-m-Y', $raw2);

echo 'theDatedate: ' . $theDate->format('m/d/Y') . "<br>";
echo 'anotherDate date: ' . $anotherDate ->format('m/d/Y') . "<br>";

if ($theDate > $anotherDate ) {
    echo "Greater than!<br />";
}

如果您正在学习php,请查看this resource, is worth reading.

答案 1 :(得分:2)

要将日期比较为字符串,请使用UTC格式YYYY-MM-DD。如果你想将它作为整数进行比较,你必须将其转换为秒或者从年份开始比较,然后与月份进行比较,等等---

答案 2 :(得分:1)

它使用字符串比较。因此,它首先查看第一个字符,如果大于,则返回true。如果更少,则返回false。如果相等,请移至下一个字符。

您可以通过反向格式化字符串来解决此问题:Y-m-d。或者使用内置运算符:

if($time > strtotime($text))

其中$time以秒为单位指定。

答案 3 :(得分:1)

  

您正在比较字符串。将日期转换为秒然后进行比较,   为所有格式工作等。

$theDate = date('d-m-Y', strtotime("04-05-2010"));
echo "$theDate<br />";
if(strtotime($theDate) > strtotime("02-05-2010"))
{
 echo "Greater than!<br />";
}
if(strtotime($theDate) > strtotime("02-05-2011"))
{
 echo "Why am I showing<br />";
}
echo "Endof";