You need to sign in to do that
Don't have an account?
k_ogawa
日付項目のチェック
お世話になっております。
ApexとVisualforceで日付の入力項目を作成しているのですが、
登録ボタンを押下した際に入力チェックを行いたいと考えております。
チェック項目としては
・日付が存在する日付か
・YYYY/MM/DDの形で入力されているか
・半角数字か
です。
必須項目なので、
if(this.StartDateText == null)とすることで入力されているか否かの判断はできたのですが、
上記3つの処理の判定法方がわかりません。
ご存知の方、ご教授いただけないでしょうか。
よろしくお願い致します。
ApexとVisualforceで日付の入力項目を作成しているのですが、
登録ボタンを押下した際に入力チェックを行いたいと考えております。
チェック項目としては
・日付が存在する日付か
・YYYY/MM/DDの形で入力されているか
・半角数字か
です。
必須項目なので、
if(this.StartDateText == null)とすることで入力されているか否かの判断はできたのですが、
上記3つの処理の判定法方がわかりません。
ご存知の方、ご教授いただけないでしょうか。
よろしくお願い致します。
こんにちは。
山﨑です。
「テキストボックスに入力された任意の文字列が、Date型に変換可能か判断する」
という仕様でよろしければ以下のような方法が考えられると思います。
注意点として、Date.parseの際に判断基準となるフォーマットは
local date formatに依存するとあります。
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_date.htm#apex_System_Date_parse
このlocal date format とはユーザーの設定画面における「地域」です。
(試しに、地域を「アメリカ合衆国」などに変更するとMM/dd/yyyy形式しか受け付けなくなります)
パッケージとして他の組織に配布しようとお考えのようでしたら、気をつけないといけないかもしれませんね。
All Answers
チェック項目を3つほど挙げましたが、単純に日付がtureかfalseかだけ判断
できれば入力チェックになるので、その判断法方がございましたらお教えください。
こんにちは。
山﨑です。
「テキストボックスに入力された任意の文字列が、Date型に変換可能か判断する」
という仕様でよろしければ以下のような方法が考えられると思います。
注意点として、Date.parseの際に判断基準となるフォーマットは
local date formatに依存するとあります。
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_date.htm#apex_System_Date_parse
このlocal date format とはユーザーの設定画面における「地域」です。
(試しに、地域を「アメリカ合衆国」などに変更するとMM/dd/yyyy形式しか受け付けなくなります)
パッケージとして他の組織に配布しようとお考えのようでしたら、気をつけないといけないかもしれませんね。
自分も文字列の日付は try-catch で判定するのが簡単でいいと思います。
文字列の日付変換はDate.valueOfも便利です。
こちらは地域が変更されてもyyyy/MM/ddのままで判定できるので便利だと思います。
CommonDateみたいな共通クラスにこんな感じの処理を用意して対応するのがいいんじゃないかと思います。
こんな感じのテストコードで検証してます。
いつもお世話になっております。
頂いたサンプルを基に作ってみたところ、理想の動きになりました。
最初、『Date d = Date.parse(this.startDateText);』の部分でエラーが出ていてハマりかけましたが、
this.startDateTextをDate型で宣言していた為エラーになっていたようです。
無事解決しました。
いつも的確なアドバイスありがとうございます。
いつもお世話になっております。
サンプルを頂いたばかりか、検証までして頂きありがとうございます。
ただ、私には共通クラスの作り方、使い方がいまひとつ理解できていないため、
今回はこちらの方法はとらずに作成いたしました。
日付変換の箇所につきましては、Date.valueOfを採用させて頂きました。
お忙しい中質問に応えていただきありがとうございます。
BestAnswerについては山﨑様とさせて頂くことをご了承ください。
またどうぞよろしくお願い致します。