Проблемы с преобразованием даты в формат даты для обновления

Дата хранится в базе данных в формате DATE со значением

2017-04-06

Можно правильно преобразовать для отображения следующим образом, чтобы пользователь мог изменить его (при необходимости):

$date_order = date("m/d/y", strtotime($data['date_order']));

Это правильно отображается как

04/06/17

Попытка преобразования обратно в формат даты (Y-m-d) при обновлении базы данных с использованием следующего:

$date_ship = date('Y-m-d',$_POST['date_ship']);

К сожалению, он преобразуется в следующее значение:

1970-01-01

error Log = «Обнаружено неверно сформированное числовое значение».

0

Решение

Если у вас есть строка типа «04/06/17», нет точного способа определить, является ли 04 днем ​​или месяцем. Вы можете использовать createFromFormat() способ явно указать, что вы хотите.

$date = DateTime::createFromFormat('m/d/y', '04/06/17');
echo $date->format('Y-m-d');
1

Другие решения

Вам нужно преобразовать строку в метку времени, используя strtotime() функция.

$date_ship = date('Y-m-d',strtotime($_POST['date_ship']));

Алекс Хованский предлагает более пуленепробиваемое решение, так что вы можете использовать его.

$date_ship = DateTime::createFromFormat('m/d/y', $_POST['date_ship'])->format('Y-m-d');
1

По вопросам рекламы [email protected]