1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[CakePHP3] 日付のバリデーションでフォーマットを指定する方法

Posted at

通常の日付バリデーションの設定方法

$validator = new Validator();

$validator->add('<項目名>', [
'date' => [
'rule' => 'date',
'message' => '<エラーメッセージ>',
]);

この場合、「2019/06/21」といったフォーマットだとバリデーションOKとなりますが、海外で使用される「06/21/2019」といったフォーマットだとエラーになってしまいます。

日付フォーマットを指定したバリデーションの設定方法①

$validator = new Validator();

$validator->add('<項目名>', [
'date' => [
'rule' => ['date', 'mdy'],
'message' => '<エラーメッセージ>',
]);

この場合、「06/21/2019」といったフォーマットだとバリデーションOKとなりますが、逆にこれまでOKだった「2019/06/21」がバリデーションNGとなってしまいます。

日付フォーマットを指定したバリデーションの設定方法②

$validator = new Validator();

$validator->add('<項目名>', [
'date' => [
'rule' => ['date', 'mdy'],
'message' => '<エラーメッセージ>',
]);

上記のようにフォーマットを複数指定することも可能で、この場合「2019/06/21」「06/21/2019」のどちらもバリデーションOKとなります。

フォーマット一覧

最後に日付バリデーションで設定できるフォーマットを一覧にしておきます。

フォーマット サンプル(2006年12月27日の場合)
dmy 27-12-2006 or 27-12-06 ※区切りは「-」「 」「.」「/」が可能
mdy 12-27-2006 or 12-27-06 ※区切りは「-」「 」「.」「/」が可能
ymd(default) 2006-12-27 or 06-12-27 ※区切りは「-」「 」「.」「/」が可能
dMy 27 December 2006 or 27 Dec 2006
Mdy December 27, 2006 or Dec 27, 2006 ※カンマ無しも可
My December 2006 or Dec 2006
my 12/2006 or 12/06 ※区切りは「-」「 」「.」「/」が可能
ym 2006/12 or 06/12 ※区切りは「-」「 」「.」「/」が可能
y 2006
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?