我在比较两个日期时遇到了问题。我知道这听起来有点傻但我希望你们都尝试这个例子。
$a = date('d-m-Y', strtotime('2014-07-03'));
$b = date('d-m-Y', strtotime('2014-03-17'));
$c = date('d-m-Y', strtotime('2015-03-16'));
if(($a > $b) && ($a < $c) ) {
echo "1";
}
else {
echo "2";
}
为什么结果是2?
答案 0 :(得分:14)
你的“逻辑”是错误的。
&GT; xkcd
$a = '2014-07-03';
$b = '2014-03-17';
$c = '2015-03-16';
if(($a > $b) && ($a < $c)) {
echo "1"; // it works!
}
Big-endian格式非常棒。
答案 1 :(得分:4)
因为您的日期格式 不适合比较。在比较日期时(或使用DateTime()对象),始终使用YYYY-MM-DD格式。这是因为04-01-2014小于05-01-2014,当时比较为字符串。
$a = '2014-07-03';
$b = '2014-03-17';
$c = '2015-03-16';
if(($a > $b) && ($a < $c) ) {
echo "1";
}
else {
echo "2";
}
或者在使用DateTime()对象时:
$a = new DateTime('2014-07-03');
$b = new DateTime('2014-03-17');
$c = new DateTime('2015-03-16');
if(($a > $b) && ($a < $c) ) {
echo "1";
}
else {
echo "2";
}
答案 2 :(得分:0)
在你的日期/ strtotime功能之后,你有:
$a = '03-07-2014'
$b = '17-03-2014'
$c = '16-03-2015'
所以当你比较时,$ a小于$ b,因为它比较了第一天。