簡體   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