cómo obtener la fecha de excel usando la biblioteca PHPExcel

Estoy tratando de obtener la fecha de Excel utilizando PHPExcel. Pero no recibo la fecha, obtengo un valor de cadena que no es segundos desde 1970.

El código que he intentado es

$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue()); 

Solutions Collecting From Web of "cómo obtener la fecha de excel usando la biblioteca PHPExcel"

Intenta usar

 $cell = $excel->getActiveSheet()->getCell('B' . $i); $InvDate= $cell->getValue(); if(PHPExcel_Shared_Date::isDateTime($cell)) { $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); } 

PD

@DiegoDD: Debería mencionar que el formato $ es el formato deseado para la fecha. p.ej:

  $InvDate = date($format = "Ymd", PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 

Para una fecha, getValue () debería devolver un flotante, que es el valor de la marca de tiempo serializado de Excel para esa fecha / hora … Sospecho que es su ajuste () el que lo está enviando a la cadena. El valor real es el número de días desde 1/1/1900 (o 1/1/1904 según el calendario que usa la hoja de cálculo).

Llamar a getFormattedValue () o getCalculatedValue () en lugar de getValue () debe devolver la fecha formateada como una cadena legible por humanos de acuerdo con la máscara de formato de número de la celda.

Alternativamente, la solución de Sergey prueba si la celda tiene una máscara de formato de fecha / hora y llama al método auxiliar apropiado para convertir esa marca de tiempo seriada de Excel a una marca de tiempo de UNIX, luego utiliza la función de fecha PHP normal para formatearla como legible por humanos de acuerdo con el valor de $ formato. Hay un método similar de ayuda PHPExcel_Shared_Date :: ExcelToPHPObject () que convertirá una marca de tiempo serializada de Excel en un objeto PHP DateTime

En la nueva versión de la biblioteca, PhpOffice , la función que maneja esto es excelToDateTimeObject para que el nuevo formato de código sea:

 $cell = $excel->getActiveSheet()->getCell('B' . $i); $InvDate= $cell->getValue(); if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) { $InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate); }