При использовании Carbon я получил сообщение об ошибке «текстовый месяц не найден» - PullRequest
0 голосов
/ 08 мая 2019

В моем приложении Laravel 5.8 я конвертирую дату в строковом формате, например 02 May, 2019, в дату и время, используя Carbon.Я пытаюсь сделать следующее:

setlocale(LC_TIME, 'en');
$filter_check_in_datepicker_till = Carbon::createFromFormat( 'dd MMMM YYY', $filter_check_in_datepicker_till )->locale('en_EN');;

Но получена ошибка:

"message": "Обнаружены неожиданные данные. \ NНе удалось найти текстовый месяц \ nДанных не хватает",

Какой правильный путь?

Спасибо!

1 Ответ

1 голос
/ 08 мая 2019

Carbon Docs говорят:

createFromFormat () - это, в основном, оболочка для базовой функции php DateTime :: createFromFormat.

Это не совсем понятно из документов, но это означает, что параметр $ format, переданный в createFromFormat(), имеет формат DateTime, не формат Carbon. Таким образом, вместо dd MMMM YYY вы должны использовать d, M Y (проверьте справочник формата DateTime ):

\Carbon\Carbon::createFromFormat('d, M Y', '02, May 2019');
// returns 2019-05-02 12:48:26

Для справки, в вашем формате Carbon есть несколько проблем, поэтому, даже если createFromFormat взяла строку формата Carbon, то у вас не получится. Проверка ссылки Carbon :

  • dd на самом деле «Сокращенное название дня (от Su до Sa), переводимый». Вы действительно хотите DD для заполненного нулями дня месяца;

  • Используемый формат даты включает запятую, но в строке формата отсутствует;

  • YYY на самом деле не является допустимой строкой формата Carbon. Вы действительно хотели YYYY для 4-значного года;

...