PHP Электронная таблица / Laravel Excel - Формат даты в CSV преобразуется в локальный формат пользователя после редактирования - PullRequest
2 голосов
/ 13 июля 2020

Я пытаюсь использовать Laravel Excel , который основан на PHP электронной таблице , чтобы пользователи могли загружать файл, редактировать его, а затем загружать.

Затем я просто l oop просматриваю каждую ячейку и сравниваю значение, чтобы обнаружить какие-либо изменения.

Однако формат даты меняется и, таким образом, помечается как изменение, даже если его нет.

Если я экспортирую файл как XLS, тогда даты будут преобразованы во временную метку, и с ними действительно легко работать, например,

\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($sheet->getCellByColumnAndRow($col, $row)->getValue())

Однако, если я экспортирую как CSV, я вручную устанавливаю формат в Ymd (это кажется самым простым, поскольку никто в мире не использует Ydm, поэтому формат должен быть ясным).

Но когда я открываю CSV на своем локальном компьютере, редактирую какое-то поле без даты и сохраняю его, затем даты затем преобразуются в d / m / Y (мой локальный формат).

Итак, если я экспортирую 2000-12-25, я вернусь 25/12/2000.

В этом конкретном c пример, очевидно, я знаю формат d / m / Y, потому что это моя локальная машина, но sinc Это может быть использовано кем угодно в мире, значение ячейки может быть датой в огромном диапазоне форматов, и мне нужно найти способ узнать, в каком формате находится дата.

Есть ли способ определить формат даты из заголовков в файле CSV или что-то в этом роде?

...