我正在尝试学习一点点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会执行,
提前感谢,
乔
答案 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";