我正在尝试与If语句进行日期比较。
告诉我,是的,日期是在今天之前,但它不会给我一个负数而不是日期是在今天之后。
这就是我所拥有的。
$datetime= date('Y-m-d');
$time=strtotime($datetime);
echo "<br><br>Today is " . $datetime;
$datetime1= $row['edate'];
$time1=strtotime($datetime1);
echo "<br>The date to compare is " . $row['date'];
$result3 = mysql_query("SELECT date FROM table where name='" . $row['name']. "'");
$row3 = mysql_fetch_row($result3);
$start = $time;
$end = strtotime($row3[0]);
$between = ceil(abs($end - $start) / 86400);
这将输出TODAY&S; S date和END DATE
的正确值我们今天说的是2014-09-09,我们的结束日期是2014-09-12
echo "<br>There are<b> ". $between. "</b> days left";
输出:还有3天
现在如果我得到另一个日期说2014-09-06 我得到了相同的输出。
echo "<br>There are<b> ". $between. "</b> days left";
输出:还有3天
我想看看:
还有-3天
我想把这一切都放在if语句中以显示数据库的记录。
if ($between < 0){
DONT SHOW RECORD
}
else {
SHOW RECORD
}
问题是$ between之间永远不会小于0
简单测试
$t = 10;
$o = 12;
$difference = abs($o-$t);
echo "The Difference is ".$difference;
输出:差异为2
$t = 10;
$o = 12;
$difference = abs($t-$o);
echo "The Difference is ".$difference;
输出:差异为2
为什么差异不是-2
答案 0 :(得分:2)
abs()给出绝对数字,这意味着它永远不会是负数。将abs()更改为intval()或将其转换为int(c-style)
$difference = (int)$t - (int)$o;
作为旁注:您应该转义SQL查询,并且只使用sql查询就可以实现相同的结果。这种简单的解决方案不需要在php端进行日期比较。
答案 1 :(得分:1)
PHP中的ABS()函数取绝对值,这是您输入的任何值的正值。ABS(10-12)=2
和ABS(12-10)=2
。看起来你只想要它们之间的距离,你可以使用
$difference = $t-$o;