验证1970-01-01之前的日期

时间:2013-12-04 15:26:13

标签: validation yii

如何在1970-01-01之前验证日期(如1900-01-01)?

当我尝试使用CDateVaildator时,它以CTimestamp::getTimestamp()结尾(我在调试器的帮助下找到它)

return @mktime($hr,$min,$sec,$mon,$day,$year)

其中$ hr = 0,$ min = 0,$ sec = 0,$ mon = 1,$ dat = 1,$ year = 1900这显然会返回false并且无法进行整体验证。

2 个答案:

答案 0 :(得分:0)

CTimestamp :: getTimestamp()将为从1901年(不是1900!)到2038年的任何日期生成时间戳。对于1901年到1970年之间的日期,它会生成一个负数。刚试过它,我可以上班的最早日期是1901年12月14日。在此之前的任何事情都会引发错误。不知道如何处理这个范围之外的日期!

答案 1 :(得分:0)

在Yii中有一个错误描述here。解决方案在那里提出,但由于某种原因,它不包含在Yii 1.1.14中,尽管它标记为承诺中继。

简而言之 - 只有当规则中定义了属性时,修复才会尝试构建时间戳。

要在自己的项目中使用它,您必须扩展CDateValidatorCDateTimeParser