я имею xlsx
таблицы и я использую PhpSpreadsheet для их анализа. В некоторых ячейках формат даты. Проблема в том, что PhpSpreadsheet возвращает значения из ячеек с форматированием даты в неопределенном формате:
// How it looks in excel: 2017.04.08 0:00
$value = $worksheet->getCell('A1')->getValue(); // 42833 - doesn't look like a UNIX time
Как получить дату из ячейки в виде времени UNIX или DateTimeInterface
пример?
Значение — это количество дней, прошедших с 1900 года. Вы можете использовать встроенные функции PhpSpreadsheet для преобразования его в метку времени Unix:
$value = $worksheet->getCell('A1')->getValue();
$date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value);
Или на PHP DateTime
объект:
$value = $worksheet->getCell('A1')->getValue();
$date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value);
Когда мы итерируем с $row->getCellIterator()
или у нас могут быть другие виды стоимости, это может быть полезно использовать GetFormattedValue вместо
при использовании getValue()
при использовании getFormattedValue()