У меня есть форма регистрации для веб-сайта, который использует модуль bootstrap datepicker для обработки даты «день рождения» в формате дд.мм.гггг.
Ввод:
<input type="text" id="birthday" name="birthday" data-provide="datepicker" class="form-control datepicker" required />
JS:
$('.datepicker').datepicker({
format: "dd.mm.yyyy",
weekStart: 1,
autoclose: true
});
Когда пользователь отправляет форму, вот как я получаю день рождения
$user->birthday=$_POST['birthday'];
, а в классе создания пользователя я буду очищать ввод с помощью:
$this->birthday=htmlspecialchars(strip_tags($this->birthday));
Теперь я хочу сохранить это в таблицу MySQL, и столбец «день рождения» отформатирован как DATE, поэтому он должен иметь формат Ymd. Для этого я попытался преобразовать дату следующим образом:
//since I get a string, first convert it to time, create a date from it and format it to Y-m-d and then bind it to the birthday parameter.
$birthday_converted = date_format(date_create(strtotime($this->birthday)),"Y-m-d");
$stmt->bindParam(':birthday', $this->birthday_converted);
При этом я получаю сообщение об ошибке:
Предупреждение: параметр date_format () ожидает 1 - DateTimeInterface, целое число
, хотя дата будет записана в базу данных, но неверно. Например, если выбрана дата 16.03. 2020 (16 марта), в БД я получу 2016 -03-20