比较php/phpExcel的日期

比较php/phpExcel的日期,php,datetime,phpexcel,Php,Datetime,Phpexcel,我从excel文件中获取一个日期值,并将其更改为如下日期 $dateEx = $sheet->getCellByColumnAndRow(2,$line)->getValue(); $date = date('Ymd',($dateEx - 25569)*24*60*60); 我还有另外两个日期时间,可以从字符串转换为日期 $dateOuverture = '20150306'; $dateFerm = '20150906';

我从excel文件中获取一个日期值,并将其更改为如下日期

$dateEx = $sheet->getCellByColumnAndRow(2,$line)->getValue();      
$date = date('Ymd',($dateEx - 25569)*24*60*60);
我还有另外两个日期时间,可以从字符串转换为日期

  $dateOuverture = '20150306';
  $dateFerm = '20150906';              

  $dateOuverture = new Datetime($dateOuverture);
  $dateOuverture = $dateOuverture->format('Ymd'); 


  $dateFerm = new Datetime($dateFerm);
  $dateFerm = $dateFerm->format('Ymd'); 
当我想把日期和一个如果不起作用的

if($date<=$dateFerm && $date>=$dateOuverture){
     echo "Im in the if";

}
if($date=$dateOuverture){
回显“Im在if中”;
}
我做错了什么


感谢您的帮助

PHP日期函数接受时间戳作为第二个参数,没有ISO8601日期格式。strotime确实接受这一点,并返回一个有效的时间戳。将这两者结合起来,如下所示:

$dateEx = $sheet->getCellByColumnAndRow(2,$line)->getValue();
$iso8601Date = ($dateEx - 25569)*24*60*60;    
$date = new DateTime($iso8601Date);
有关日期格式的详细信息,请参见链接

比较DateTime对象

$dateOuverture = '20150306';
$dateFerm = '20150906';

$dateOuverture = new Datetime($dateOuverture);
$dateFerm = new Datetime($dateFerm);

if($date<=$dateFerm && $date>=$dateOuverture){
    echo "Im in the if";
}
$dateOuverture='20150306';
$dateFerm='20150906';
$dateOuverture=新日期时间($dateOuverture);
$dateFerm=新日期时间($dateFerm);
如果($date=$DATEOUTERTURE){
回显“Im在if中”;
}

从excel中,我得到的是42164.536761227这样的数字,而不是日期

这些数字是MS Excel序列化的时间戳值

这就是为什么PHPExcel提供函数在MS-Excel序列化的时间戳值和PHP-DateTime对象或Unix时间戳之间进行转换(反之亦然)


然后可以使用标准PHP函数进行任何比较

请添加($dateEx-25569)*24*60*60将两个字符串转换为时间的示例。使用
strotime
。4.2之前版本中的日期无法进行比较@JacquesKoekemoer,格式是有效的,从excel记录到ISO8601符号()。我得到的数字是42164.536761227,而不是date。计算后date的第二个参数包含什么?尝试比较两个datetime对象。请参阅我的编辑和此链接:在第二个示例中,它实际上是PHPExcel_Shared_Date::ExcelToPHP(42164.536761227);
$dateTimeObject = PHPExcel_Shared_Date::ExcelToPHP(42164.536761227);
echo $dateTimeObject->format('Y-m-d H:i:s');
$unixTimestamp = PHPExcel_Shared_Date::ExcelToPHP(42164.536761227);
echo date('Y-m-d H:i:s', $unixTimestamp);