Не удается извлечь год с DateTime :: createFromFormat - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь извлечь год ввода даты, например

$start = $request->input('start');

$refYear = DateTime::createFromFormat("Y-m-d H:i:s", $start)->format("Y");

Но у меня ошибка Call to a member function format() on boolean, и я видел другие ответы, но пока ничего не получилось.

Где начало определяется как ввод на моей странице

<input id="start" type="text" name="start" class="date-type"
                placeholder="dd-mm-aaaa"><i class="fi-calendar" style="top: 2px;"></i>

В моей таблице столбец startDate представляет собой дату, например, «2017-10-26 00: 00: 00.000», а refyear - int (2017).

Ответы [ 2 ]

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

Согласно документации DateTime :: createFromFormat:

Возвращает новый экземпляр DateTime или FALSE при ошибке.

Вот почему вы вызываете его как логическое значение, потому что значение равно false.

Ваш формат, кажется, правильный, это означает, что createFromFormat не может обработать ваш $start. Ваш ввод не соответствует вашему формату, убедитесь, что он соответствует.

Например, работает следующее:

echo (DateTime::createFromFormat("Y-m-d H:i:s", "2019-01-01 12:30:30"))->format("Y"); // result: 2019

@ Jeprubio из комментариев правильно, кстати. - добавьте миллисекунды в соответствии с заданным форматом:

echo DateTime::createFromFormat("Y-m-d H:i:s.u", "2017-10-26 00:00:00.000")->format("Y"); // 2017
0 голосов
/ 08 мая 2019

Вместо этого вы можете попытаться использовать Carbon:

$refYear = Carbon::createFromFormat("Y-m-d H:i:s", $start)->format("Y");

Но и ваш формат неверен, вы пропускаете .u на основе вашего примера поля даты.Вы должны использовать это:

$refYear = Carbon::createFromFormat("Y-m-d H:i:s.u", $start)->format("Y");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...