【问题标题】:Date Issue: 30/11/-0001发行日期:30/11/-0001
【发布时间】:2021-05-13 07:05:10
【问题描述】:

我的网页上有一个用于管理日期的 java 脚本日历控件,有时日期值在我的数据库中存储为“30/11/-0001”。

如果有人帮助我,将不胜感激......

【问题讨论】:

  • 我们需要您的代码的 sn-ps 才能开始帮助您。
  • 国际日期格式为 YYYY/MM/DD。发布您的代码的一些 sn-ps。
  • 嗨,差不多了,当我在 Firefox 中尝试时,日期工作正常,但是,IE...
  • 它已修复,问题是,我使用了 $_REQUEST 并且它没有向我的业务逻辑文件发布任何值。谢谢大家。

标签: php javascript


【解决方案1】:

您尝试设置的日期可能为空。我在 Symfony2 项目中遇到了同样的问题,其中 DateTime 存储在 SQL 中,其值为“0000-00-00 00:00:00”,当 Twig 的日期过滤器解析时,结果为“30-11--0001”。

【讨论】:

    【解决方案2】:

    2 天后,我在 php.net 上使用 notes 得到了解决方案:

    注意:如果年份的数字以两位数格式指定, 00-69 之间的值映射到 2000-2069 和 70-99 到 1970-1999 年。有关 32 位的可能差异,请参阅下面的注释 系统(可能的日期可能在 2038-01-19 03:14:07 结束)。


    注意: 时间戳的有效范围通常是从 12 月 13 日星期五开始 1901 年 20:45:54 UTC 至 2038 年 1 月 19 日星期二 03:14:07 UTC。 (这些是 对应于 32 位的最小值和最大值的日期 有符号整数。)在 PHP 5.1.0 之前,并非所有平台都支持 负时间戳,因此您的日期范围可能限制为无 早于 Unix 时代。这意味着例如一月之前的日期 1、1970 不能在 Windows、一些 Linux 发行版和一些 其他操作系统。对于 64 位版本的 PHP,有效范围 时间戳实际上是无限的,因为 64 位可以表示 在任一方向大约 2930 亿年。

    由于这个问题,他们显示 01-01-197030-11--0001

    因此,您可能必须将 Validation 放在您接受输入的地方。

    我的观点:我正在接受 Android 方面的价值,所以我为此创建了正则表达式。

    你可以在这里测试Regex

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      您需要在前端进行一些测试并获取使用不同输入构造的 SQL 语句,并查看插入到数据库中的内容。 SQL 查询中的格式错误的日期可能是您看到的 db 值的罪魁祸首。

      【讨论】:

        【解决方案4】:
        if (!empty($this->dob && $this->dob != '0000-00-00')) 
        {
                $dob = date_format(date_create($this->dob), "d-m-Y");
        } else {
                $dob = '';
        }
        

        添加此条件以解决此日期问题$this->dob != '0000-00-00'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-11
          • 1970-01-01
          • 1970-01-01
          • 2018-12-06
          • 2015-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多