Дата хранится в базе данных в формате 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 = «Обнаружено неверно сформированное числовое значение».
Если у вас есть строка типа «04/06/17», нет точного способа определить, является ли 04 днем или месяцем. Вы можете использовать createFromFormat()
способ явно указать, что вы хотите.
$date = DateTime::createFromFormat('m/d/y', '04/06/17');
echo $date->format('Y-m-d');
Вам нужно преобразовать строку в метку времени, используя 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');