Прямо сейчас я использую функцию strtotime для преобразования немецкого формата даты (01.01.2017) в акции (2017-01-01). Например, я использую date('Y-m-d', strtotime($birthday)). Теперь я хочу использовать формат короткой немецкой даты и конвертировать ее в сток. Например. 1.1.17 следует перевести на 2017-01-01. Как я могу это сделать? Использование функции strtotime не работает (или мне глупо правильно ее использовать)

И еще вопрос: как я могу поймать ошибку, если кто-то наберет 32.01.2017? Я получаю только уведомление об отладке или, на производстве, сообщение "Ошибка, ...", "ошибка". Было бы замечательно сделать вместо этого приятное предупреждающее сообщение. Я получаю следующее сообщение об ошибке:

DateTime :: __ construct (): Не удалось проанализировать строку времени (32.10.2016) в позиции 0 (3): неожиданный символ

0
Nemo Grippa 19 Окт 2017 в 12:16

3 ответа

Лучший ответ

Вы можете использовать это.

$date = '1.1.17';
$year = substr($date, -2);
$finalDate= substr($date, 0, -2)."20".$year;
Carbon::createFromFormat('m.d.Y',$finalDate)->format('Y-m-d');

(Обновлено ) .

2
Kenneth Tomagan 19 Окт 2017 в 11:29

Для управления датой Laravel вы можете использовать красивый пакет с именем Carbon, который решит вашу проблему с Carbon::parse("data");

Здесь вы можете тонкой документации.

http://carbon.nesbot.com/docs/ А вот документация API для Laravel:

https://laravel.com/api/5.5/Illuminate/Support/Carbon.html

0
LorenzoBerti 19 Окт 2017 в 09:19

Как упомянул LorenzoBerti, вы можете использовать углерод для анализа вашей даты:

$birthday = Carbon::parse($birthday)->format('d.m.y');

Обратите внимание на метод format(), он должен дать вам необходимый формат.

0
ChrisBratherton 19 Окт 2017 в 09:36