mysql — Странная проблема с датой в PHP strtotime

Я пытаюсь сохранить некоторые даты в моей базе данных (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

Кто-нибудь знает, почему так происходит? И как это исправить? Мне нужно вставить в мою БД возможные даты проживания людей. Спасибо за прочтение.

1

Решение

Дата сохранена!

$fechanac=mysql_real_escape_string(($_POST["fechanac"]));
echo "<h1>{$fechanac}</h1>";
$datearray=explode("/",$fechanac);
$fechanac="{$datearray[2]}-{$datearray[1]}-{$datearray[0]}";
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();
0

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