发行日期:30/11 / -0001

时间:2011-06-24 15:34:05

标签: php javascript

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

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

  

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

           

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

因为这个问题他们显示 01-01-1970 30-11--0001

因此,您可能必须从您接受输入的地方进行验证。

来自我方:我正在使用Android方面的价值,因此我为此创建了正则表达式。

您可以在此处测试Regex

希望它会对你有所帮助。

答案 3 :(得分:0)

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'