使用“尊重验证”进行月份验证

时间:2015-03-30 13:02:22

标签: php validation credit-card respect-validation

我正在尝试为信用卡月编写验证规则,我正在使用Respect Validation库。

v::string()->date('m')->validate('02');

结果为FALSE,但必须为TRUE,因为“02”是有效月份

3 个答案:

答案 0 :(得分:1)

编辑:好的,我发现了问题。由于二月只有28天,因此您无法在没有日期的情况下验证此库的日期(现在是月份的第30天,因此它会返回03而不是02)。

Soloution:

v::int()->between(1, 12)->validate(02);

OR

您可以添加第一天进行比较。

$value = '01-'.$input;    
v::string()->date('d-m')->validate($value);

答案 1 :(得分:0)

您需要将format指定为!mAs noted on PHP manual,如果省略日期格式的其他部分,则使用当前时间。使用!重置UNIX纪元的时间。

another answer here解释了这一点。

PS:我们将尝试在库本身上修复它。

答案 2 :(得分:0)

问题是验证是使用DateTime::createFromFormat()进行此验证。

PHP manual说:

  

如果format不包含字符,则生成时间中未以格式指定的部分将设置为当前系统时间。

因此,为避免出现问题,a fix has been made和验证现在正在使用date_parse_from_format()

此错误已在2016年3月31日(版本0.8.14,0.9.8和1.0.5)修复,并且也可在1.1上使用。

您可以考虑升级您的库版本。