PHP日期之间的比较

时间:2015-09-17 06:49:59

标签: php date conditional

我有这段代码:

$val_datefrom = strtotime("2015-01-01");
$val_datefrom = date('Y-m-d',$val_datefrom);

$val_dateto = strtotime("2015-09-30");
$val_dateto = date('Y-m-d',$val_dateto);

$dsdate = strtotime("2015-01-07");
$dsdate = date('Y-m-d',$dsdate);

echo $val_datefrom .'>='. $dsdate .'&&'. $val_dateto .'<='. $dsdate.'<br>';
var_dump($val_datefrom >= $dsdate && $val_dateto <= $dsdate);
var_dump($val_datefrom >= $dsdate);
var_dump($val_dateto <= $dsdate);

if($val_datefrom >= $dsdate && $val_dateto <= $dsdate){
  // some codes if true
}

我确信我的代码是正确的,但却给出了null值。我尝试调试代码,这是var_dump()

的结果
2015-01-01>=2015-01-07&&2015-09-30<=2015-01-07
bool(false) bool(false) bool(false) 
2015-01-01>=2015-01-08&&2015-09-30<=2015-01-08
bool(false) bool(false) bool(false) 

对此有何想法?

1 个答案:

答案 0 :(得分:3)

虽然这是一种不同的方法,但您考虑使用DateTime::diff()吗?这是比较PHP日期的简单方法。

OOP:

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>

程序:

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>

输出:

+2 days

您可以使用此方法创建if语句,而无需执行额外步骤:

if(($val_datefrom->diff($dsdate)->format('%R%a') >= 0) 
&& ($val_dateto->diff($dsdate)->format('%R%a') <= 0)){ ... }

详细了解here