How to retrieve date from table cell using PhpSpreadsheet? How to retrieve date from table cell using PhpSpreadsheet? php php

How to retrieve date from table cell using PhpSpreadsheet?


The value is amount of days passed since 1900. You can use the PhpSpreadsheet built-in functions to convert it to a unix timestamp:

$value = $worksheet->getCell('A1')->getValue();$date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value);

Or to a PHP DateTime object:

$value = $worksheet->getCell('A1')->getValue();$date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value);


When we are iterating with $row->getCellIterator() or we might have other kinds of value, it might be useful to use getFormattedValue instead

while using getValue()

  • Full name: Jane Doe => "Jane Doe"
  • DOB: 11/18/2000 => 36848.0

while using getFormattedValue()

  • Full name: Jane Doe => "Jane Doe"
  • DOB: 11/18/2000 => "11/18/2000"


Since i cant add comment just adding an answer for future users. you can convert a excel timestamp to unix timestamp by using the following code (from accepted answer)

 $value = $worksheet->getCell('A1')->getValue(); $date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value);

And you can determine whether the given cell is Date Time using \PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell) function.