PHP strtotime奇怪的日期问题

时间:2014-11-14 23:04:01

标签: php mysql date strtotime date-conversion

我试图在我的数据库(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


1901年1月1日

1970-01-01


1902年1月1日

1902年1月1日

有人知道为什么会这样吗?以及如何解决它?我需要在我的DB中插入可能的生活日期。谢谢阅读。

2 个答案:

答案 0 :(得分:0)

存储日期!

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

答案 1 :(得分:0)

我知道这是老帖子,但也许这个迟到的答案可以帮助其他人:

DateTime class 正确管理早于1970年的日期。请忘记使用date()并演变为DateTime:< / p>

$fechanac=mysql_real_escape_string(($_POST["fechanac"]));
echo "<h1>{$fechanac}</h1>";

$fechanac=(new DateTime($fechanac))->format('Y-m-d');

echo "<h1>{$fechanac}</h1>";exit();