比较php/phpExcel的日期
我从excel文件中获取一个日期值,并将其更改为如下日期比较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';
$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);