日付・時間のバリデーション

日付や時刻に関するバリデーションは以下のルールがビルトインされています。

  • date 日付
  • time 時刻
  • datetime 日時


(m:「月」を数字表記 / M:「月」を英語表記)

date (=>年月日)

年月日をバリデーションする場合は、それぞれのフォーマットに合わせて'dmy'、'mdy'、'ymd'、'dMy'と'Mdy'を使い分けて下さい。

//	年月日
public $validate = array(
    'birthday' => array(
//      区切り文字が「ハイフン」「半角スペース」「ドット」「スラッシュ」のいずれか
        'rule' => array( 'date', 'dmy'),
//      'rule' => array( 'date', 'mdy'),    // mm-dd-yy もしくは mm-dd-yyyy
//      'rule' => array( 'date', 'ymd'),    // yy-mm-dd もしくは yyyy-mm-dd
//      区切り文字→「半角スペース」
//      'rule' => array( 'date', 'dMy'),    // dd MM yy もしくは dd MM yyyy
//      区切り文字→「半角スペース」カンマはオプション
//      'rule' => array( 'date', 'Mdy'),    // MM dd, yy もしくは MM dd, yyyy
        'message' => 'dd-mm-yyyy もしくは dd-mm-yyyy',
//      'allowEmpty' => true
    ),
);

date (=>年月)

//	年月
public $validate = array(
    'expiration' => array(
//      区切り文字が「ハイフン」「半角スペース」「ドット」「スラッシュ」のいずれか
        'rule' => array( 'date', 'my'),    // mm-yy もしくは mm-yyyy
//      'rule' => array( 'date', 'ym'),    // yy-mm もしくは yyyy-mm
//      区切り文字→「半角スペース」
//      'rule' => array( 'date', 'My'),    // MM yy もしくは MM yyyy
        'message' => 'mm-yy もしくは mm-yyyy',
//      'allowEmpty' => true
    ),
);

date (=>年)

年のみのバリデーション。(ただし、1900~2099の間)

//	年月
public $validate = array(
    'expiration' => array(
        'rule' => array( 'date', 'y'),    // yyyy
        'message' => 'yyyy(1900~2099)',
//      'allowEmpty' => true
    ),
);

time (=>時刻)

24時間表記もしくは、後ろにamもしくはpmを使用しての12時間表記をバリデーション。24時間表記の場合、時間は0埋めする必要があります。

24時間表記 => 01:12, 23:22
12時間表記 => 1:12 AM、01:12 PM、11:02 pm、10:32 am

datetime (=>日時)

年月日+時刻のバリデーション。年月日と時刻の間は「半角スペース」である必要があります。あとはそれぞれ前半部分の年月日をdateルールを使用して、後半部分の時刻をtimeルールを使用してバリデーションを行います。

// /lib/Cake/Utility/Validation.php
public static function datetime($check, $dateFormat = 'ymd', $regex = null) {
    $valid = false;
    // 「半角スペース」区切りで配列に格納
    $parts = explode(' ', $check);
    if (!empty($parts) && count($parts) > 1) {
        // 配列の最後尾を切り取り => 時間部分
        $time = array_pop($parts);
        // 配列を「半角スペース」区切りで文字列に変換 => 日付部分
        $date = implode(' ', $parts);
        // それぞれ日付をdateルール、時間をtimeルールでバリデーション
        $valid = self::date($date, $dateFormat, $regex) && self::time($time);
    }
    return $valid;
}
  • このエントリーをはてなブックマークに追加

関連記事

独自のバリデーションルールを作成

CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規

ネストしたリストを出力「nestedList」

DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(

Syslogログエンジン

2.4から「Syslog」ログクラスが追加され、簡単にSyslogを使用できるようになりました。 CakePHP側の設定はbootstrap.php内のCakeLogコンフィグのengineを'Sy

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

no image

HttpSocketを使用してリクエスト送信

CakePHPには、Webサービスへのリクエスト送信のためのHttpSocketクラスが用意されています。 HttpSocket get HTTP GETリクエストを発行します。デモ H

ハッシュ関数の選択とハッシュ化処理

CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ

CakePHP インストール時エラーの対処

CakePHPインストール時に出くわすであろうエラーの原因と対処方法についてまとめてみました。前提として、WebサーバはApache、データベースはMySQLとしています。 Timezone未設

コントローラ内でバリデーション処理を呼び出す

CakePHPでは、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。

Js/Cssファイルの読み込みや出力する方法

CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン

no image

radioボタンを実装

Radioボタンの実装は、セレクトボックスとほぼ同じです。 個人的にはラジオボタンをすすんで使用することは少ないのですが、2択くらいの選択肢であれば非常に便利ですよね。 今回は、その実装方法 デモ

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

PAGE TOP ↑