繁体   English   中英

比较日期php / phpExcel

[英]Comparing dates php/phpExcel

我从Excel文件中获取日期值,并且将其更改为这样的日期

$dateEx = $sheet->getCellByColumnAndRow(2,$line)->getValue();      
$date = date('Ymd',($dateEx - 25569)*24*60*60);

我还有2个将String转换为date的日期时间

  $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";

}

我怎么了

感谢帮助

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

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

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

$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);

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

PHP日期函数接受时间戳作为第二个参数,不能使用ISO8601日期格式。 Strtotime确实接受,并返回有效的时间戳。 像这样结合两个:

$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";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM