Laravel - формат даты для сохранения в базе данных MySQL - PullRequest
0 голосов
/ 12 марта 2020

Я использую Laravel, и мне нужно получить некоторые даты и сохранить их в базе данных MySQL.

Когда я создаю дату следующим образом:

$date_sol = Carbon::createFromFormat("Y-m-d H:i:s","2020-12-10 01:00:00");

Дата правильно сохраняется в базе данных. Однако мне нужно получить дату из ввода.

Я пытаюсь получить дату и затем отформатировать ее следующим образом:

$novaData = $request->input('solicitacao_data') . ' 15:16:17';
        $sol->data = Carbon::parse($novaData)->format("Y-m-d H:i:s");

Однако я получаю ошибку:

DateTime :: __ construct (): Не удалось проанализировать строку времени (28/03/2020 15:16:17) в позиции 0 (2): неожиданный символ

ошибка в строке $ sol-> data = Carbon :: parse ($ novaData) -> format ("Ymd H: i: s");

Как мне сделать правильно ли преобразовывает форматирование? Я новичок, используя Laravel. Я не уверен в этом.

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Для формата даты 'd / m / Y' попробуйте это.

Carbon::createFromFormat('d/m/Y', '22/02/2020')->toDateTimeString();

Аналогично для формата даты Ymd попробуйте это

Carbon::createFromFormat('Y-m-d', '2020-02-22')->toDateTimeString();

вывод будет в формате (Y-m-d H:i:s)

"2020-02-22 21:05:13"
1 голос
/ 12 марта 2020

Допустим, вы что-то получаете в качестве входных данных.
В идеале, в первую очередь вам следует санировать это, чтобы убедиться, что вы получили строку, которую можно интерпретировать как дату. Для этого я бы посоветовал вам посмотреть: php проверка даты

Итак, вы присваиваете ввод переменной var и добавляете к ней строку, представляющую некоторое время:

$novaData = $request->input('solicitacao_data'). ' 15:16:17';

Отсюда проще всего преобразовать строку в метку времени. Что может быть достигнуто следующим образом:

$time = strtotime($novaData);

И теперь вы можете использовать Carbon для форматирования даты так, как вы хотите:

$sol->data = Carbon::createFromTimestamp($time)->format("Y-m-d H:i:s");
...