我正在尝试为信用卡月编写验证规则,我正在使用Respect Validation库。
v::string()->date('m')->validate('02');
结果为FALSE
,但必须为TRUE
,因为“02”是有效月份
答案 0 :(得分:1)
Soloution:
v::int()->between(1, 12)->validate(02);
OR
您可以添加第一天进行比较。
$value = '01-'.$input;
v::string()->date('d-m')->validate($value);
答案 1 :(得分:0)
您需要将format
指定为!m
。 As noted on PHP manual,如果省略日期格式的其他部分,则使用当前时间。使用!
重置UNIX纪元的时间。
another answer here解释了这一点。
PS:我们将尝试在库本身上修复它。
答案 2 :(得分:0)
问题是验证是使用DateTime::createFromFormat()
进行此验证。
如果
format
不包含字符!,则生成时间中未以格式指定的部分将设置为当前系统时间。
因此,为避免出现问题,a fix has been made和验证现在正在使用date_parse_from_format()
。
此错误已在2016年3月31日(版本0.8.14,0.9.8和1.0.5)修复,并且也可在1.1上使用。
您可以考虑升级您的库版本。