Преобразование даты Excel с использованием PHP Excel

Я читаю дату от excel, которая в этом формате 12/5/2012 день / месяц / год, используя этот код для чтения. используя PHP EXCEL

PHPExcel_Style_NumberFormat::toFormattedString($value['A'],'YYYY-MM-DD' ); 

его работая как шарм, конвертирующий вышеуказанную дату '12 / 5/2012 'в' 2012-12-05 '

теперь проблема в том, что дата позволяет говорить 18/5/2012, или вы можете сказать, что если я установил день больше 12, он даст мне эту дату 18/5/2012 в этом формате 18/5/2012 после формирования

я тоже пробовал эту штуку

  $temp = strtotime( PHPExcel_Style_NumberFormat::toFormattedString($value['A'],'YYYY-MM-DD' ); $actualdate = date('Ym-d',$temp) ; 

Это также верно соответствует дате «12/5/2012», но в этом случае 18/5/2012 он дает результат как 1970-01-01

    Используйте эту формулу для перехода от даты Excel к дате Unix, затем вы можете использовать «gmdate», чтобы получить реальную дату в PHP:

     UNIX_DATE = (EXCEL_DATE - 25569) * 86400 

    и для преобразования из даты Unix в дату Excel используйте эту формулу:

     EXCEL_DATE = 25569 + (UNIX_DATE / 86400) 

    После ввода этой формулы в переменную вы можете получить реальную дату на PHP, используя этот пример:

     $UNIX_DATE = ($EXCEL_DATE - 25569) * 86400; echo gmdate("dmY H:i:s", $UNIX_DATE); 

    При использовании PHPExcel вы можете использовать встроенную функцию:

     $excelDate = $cell->getValue(); // gives you a number like 44444, which is days since 1900 $stringDate = \PHPExcel_Style_NumberFormat::toFormattedString($excelDate, 'YYYY-MM-DD'); 

    Простой способ …

     <?php $date = date_create('30-12-1899'); date_add($date, date_interval_create_from_date_string("{$value['A']} days")); echo date_format($date, 'Ym-d'); 

    Кажется, ваша переменная является строкой или ожидает дату в формате США.
    используйте «DateTime :: createFromFormat», чтобы указать дату в фактический формат даты

     $date = DateTime::createFromFormat('d/m/y', $value['A']); echo $date->format('Ym-d');