php - mysql 日期显示 30/11/-000 而不是 0000-00-00

标签 php mysql date

我知道有人问过这个问题,但我也找不到正确的答案,因为我的问题有点不同。

我有一个用 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/1999Code 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/

相关文章:

java - 在日期列中插入了错误的日期

php - 在php中从子类调用父类的函数

javascript - Ajax 和 json_encode 在 Firefox 中回显文本而不是 json

php - 在 Codeigniter 中获取额外空间(如查询)

php - Vtiger CRM 6.4.0 - 配置邮件管理器时的问题

php - MySQL 报告一个主键但不能从表中删除它

ios - 以日期和时间两种不同的字符串格式转换格式为 "19-07-2018 08:10:24"的字符串

java - 将 03/03/2015 转换为 3/3/2015 的简单快速方法

javascript - Php, Jquery 文件为什么 $_files[] 是空的?

php - 无法在 .htaccess 中正确重写和重定向 url