полный текст даты () в формате JavaScript с использованием углерода - PullRequest
0 голосов
/ 15 ноября 2018

Я генерирую и отправляю полную строку даты из функции javascript Date (), которая возвращает формат полной строки даты, например:

Sun Jan 01 2017 00:00:00 GMT+0100 (Central European Standard Time)

Анализатор углерода не примет этот формат для создания той же даты на стороне сервера.Это не работает:

$date = Carbon::parse('Sun Jan 01 2017 00:00:00 GMT+0100 (Central European Standard Time)');

Ошибка Не удалось проанализировать строку времени (вс 01 января 2017 00:00:00 GMT + 0100 (центральноевропейское стандартное время)) впозиция 41 (l): двойная спецификация часового пояса

Если я удаляю (Central European Standard Time) works:

$date = Carbon::parse('Sun Jan 01 2017 00:00:00 GMT+0100');

Тогда он правильно создает дату.

Может ли JS по умолчанию Date () использоваться каким-либо образом в Carbon или мне нужно будет отформатировать дату перед отправкой в ​​Carbon?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вы можете передать дату в формате ISO, Carbon понимает формат ISO. Вы можете получить дату в формате ISO, используя new Date().toISOString()

0 голосов
/ 15 ноября 2018

Carbon расширяет собственный класс PHP DateTime , поэтому вместо него можно использовать createFromFormat:

$date = 'Sun Jan 01 2017 00:00:00 GMT+0100 (Central European Standard Time)';
$carbon = Carbon::createFromFormat('D M d Y H:i:s e+', $date);

Важной частью спецификации формата является + в конце,который говорит ему игнорировать любые конечные данные.

См. https://3v4l.org/Rnen7 для демонстрации (используя DateTime вместо Carbon)

...