1. はじめに
今回はOutsystemsで日付のバリデーションを行う方法についてまとめます。
OutSystemsではDatePickerやInput Widgetを使えば、ある程度ビルトイン機能で日付バリデーションができますが、サーバー側でText型の日付のバリデーションを行う際などには、追加の工夫が必要です。
2. 使用環境
- OutSystemsバージョン:11
- Service Studioバージョン:11.55.22
- アプリ種別:Reactive Web App
3. Date型とDateTime型の場合
ビルトイン関数を使いましょう。
以下の公式記事でTextToDateTimeValidate
やTextToDateValidate
が紹介されています。
これらの関数を使えば、値がデフォルトの日付/時刻形式であれば有効な日付/時刻形式になっているかをチェックすることができます。
データ変換
動作確認
試しに下記の結果を返すアクションを作成し、結果を確認するとFalseで返ってきました。有効な形式については公式記事詳細をご参照ください。
注意点は"2002/01/01"でも"2002-01-01"でも"2002.01.01"でもTrueになることです。
もう少し細かくチェックしたい場合正規表現を使うことになるでしょう。
TextToDecimalValidate('2025/04/31') →False
4. YearMonth型の場合
OutSystemsには見たところ「年月型(YearMonth型)」のバリデーション関数はありませんでした。
そのため、2025/13 のような不正な値を弾くには正規表現を使う必要がありました。
実装例
まずTextAPIのRegex_Search
の参照を追加しましょう。
追加したRegex_Search
を適当に作ったアプリのボタン押下時のアクションで呼び出します。
Regex_Searchの戻り値がTrueであれば成功メッセージ、Falseであれば失敗メッセージが表示されるようにしています。
Regex_Searchの引数を追加します。
Textにはチェックする値を、Patternには以下の正規表現を指定します。
"^\d{4}/(0[1-9]|1[0-2])$" // 年(4桁)/月(01~12)の形式のみを許容します。
Inputから2025/13
を入力し、ボタンを押下します。
失敗メッセージが表示されることが確認できました。
7. まとめ
今回はOutSystemsの日付形式のバリデーションについてまとめました。
TextTo~系のビルトイン関数はよく使いますが、TextToDateValidateは個人的に初めて存在に気づいた便利関数でした。
年月(YYYY/MM)形式はText型+正規表現でバリデーションを行いました。
どなたかの参考になれば幸いです!