我知道有人问过这个问题,但我也找不到正确的答案,因为我的问题有点不同。
我有一个用 php 和 mysql 编写的网络应用程序。在过去的几年里一切正常,直到几天前我将应用程序移动到一个新的高性能服务器、源和数据库。一切都运行顺利,但在这个日期案例中并非如此。
错误的日期保存在 0000-00-00
的 mysql 表中,但是当我显示它时显示 30/11/-000
如何摆脱这个?我仍然有旧的工作服务器,所以我可以检查 mysql 或 php 配置。我认为问题很简单,只是一个配置参数,但我找不到合适的。
这是检索日期的片段。这不是我的代码,不能问原开发者,你能解释一下为什么要检查日期是 30/11/1999 吗?似乎是谷歌所说的一个常见问题,我认为涉及其中。
function getDataF($data){
if (($stadata = strtotime($data)) == -1 || $stadata === false) {
return "";
}
$return = date("d/m/Y",$stadata);
if ($return == "30/11/1999") return "";
return $return;
}
最佳答案
当输入为 00-00-00 00:00:00
时,strtotime 返回 30/11/1999
。 Code Pad here .这解释了为什么开发人员检查日期是否为 30/11/1999 并在这种情况下返回空值。
关于为什么 0000-00-00
日期显示为 31/11/-000
:似乎 strtotime 函数中存在错误(或“功能”)对于某些 PHP 版本 (example here),它返回 -0001
作为年份。因此,对于您的无效日期,日期结果为 31/11/-0001
。我猜显示日期的代码会从末尾删除一个字符,因为它期望年份为 4 位数字。
关于php - mysql 日期显示 30/11/-000 而不是 0000-00-00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667584/