我的网页上有一个用于管理日期的java脚本日历控件,有时候日期值在我的数据库中存储为“30/11 / -0001”。
如果有人帮助我,我们将不胜感激......
答案 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'