1

クレジットカードの月の検証ルールを作成しようとしていますが、これにはRespect Validationライブラリを使用しています。

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

結果は「02」が有効な月だからFALSEそうなるに違いないTRUE

4

3 に答える 3

1

編集:問題が見つかりました。2 月は 28 日しかないため、このライブラリでは日がないと日付を確認できません (現在は月の 30 日なので、比較すると 02 ではなく 03 が返されます)。

解決策:

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

また

初日を比較に追加できます。

$value = '01-'.$input;    
v::string()->date('d-m')->validate($value);
于 2015-03-30T13:08:39.213 に答える
0

問題は、Validation が を使用してこの検証を行っていたことDateTime::createFromFormat()です。

PHPマニュアルには次のように書かれています:

format文字が含まれていない場合! フォーマットで指定されていない生成された時間の部分は、現在のシステム時間に設定されます。

そのため、問題を回避するために修正が行われdate_parse_from_format()、代わりにValidation が使用されるようになりました。

このエラーは 2016 年 3 月 31 日に修正され (バージョン 0.8.14、0.9.8、および 1.0.5)、1.1 でも利用できます。

ライブラリのバージョンをアップグレードすることを検討してください。

于 2016-05-05T10:52:04.123 に答える
0

formatasを指定する必要があります!mPHP マニュアルに記載されているように、日付形式の他の部分が省略されている場合、現在の時刻が使用されます。を使用!すると、時刻が UNIX エポックにリセットされます。

これは別の回答 hereで説明されました。

PS: ライブラリ自体で修正を試みます。

于 2016-04-26T23:24:02.460 に答える