Я пытаюсь сохранить некоторые даты в моей базе данных (MySQL). Но я получил странную ошибку преобразования:
Это мой кусок кода PHP:
$fechanac=mysql_real_escape_string(($_POST["fechanac"]));
echo "<h1>{$fechanac}</h1>";
$fechanac=date('Y-m-d', strtotime(str_replace('/', '-', $fechanac)));
echo "<h1>{$fechanac}</h1>";exit();
Смотрите следующие три примера, пытаясь с (01.01.1900, 01.01.1901 и 01.01.1902).
ВЫХОД:
01.01.1900
1970-01-01
01/01/1901
1970-01-01
01/01/1902
1902-01-01
Кто-нибудь знает, почему так происходит? И как это исправить? Мне нужно вставить в мою БД возможные даты проживания людей. Спасибо за прочтение.
Дата сохранена!
$fechanac=mysql_real_escape_string(($_POST["fechanac"]));
echo "<h1>{$fechanac}</h1>";
$datearray=explode("/",$fechanac);
$fechanac="{$datearray[2]}-{$datearray[1]}-{$datearray[0]}";
Я знаю, что это и старый пост, но, возможно, этот поздний ответ может помочь другим:
Класс DateTime правильно управляет датами старше 1970 года. Поэтому забудьте об использовании date()
и развиваться в DateTime
:
$fechanac=mysql_real_escape_string(($_POST["fechanac"]));
echo "<h1>{$fechanac}</h1>";
$fechanac=(new DateTime($fechanac))->format('Y-m-d');
echo "<h1>{$fechanac}</h1>";exit();