javaでbeanを用いてプルダウンで選択した値の比較をしています。
以下、困っている事を含めまとめましたのでよろしくお願いいたします。
画面
- 日付指定K:年月日時分(プルダウンで選択)
- 日付指定I:年月日時分(プルダウンで選択)
- オプション指定O:1日、2日、3日、1週間、2週間(プルダウンで選択)+0-23時(プルダウンで選択)
エラー、OKの条件
- OK
日付指定K<オプション指定O<日付指定I
- エラー
上記大小関係が崩れた場合(日付指定Kと日付指定Iの比較は他のメソッドで作成済)
対応したこと
オプション指定Oは、数値に変換しvalueにはそれぞれ00,02,03,07,14と変換し
日付指定Kと日付指定Iでは正確な判定ができた
困っている事
オプション指定O<日付指定IならOK。そうでなければNGとしたいが、
オプション指定Oをどう判定するべきか。
日付指定I - オプション指定Oで指定した日(00・・・14)
で比較すると、指定した時間をどう設定したらいいのか。
ソース
Java
1public static String ck100(Locale locale, Calendar date1, Calendar date2, String Name) { 2//(比較する値)と(比較される値)を比較 3int i = date1.compareTo(date2); 4if (i >= 0) { 5 return getMessage(locale, "MSG10", new Object[] { Name }); 6} 7return null; 8} 9 10protected void checkRange() { 11 12if (bbsBean.getDays01() != null || bbsBean.getRmd01() != null) { 13 Calendar evDate = null; 14 DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmm"); 15 try { 16 evDate = UiUtils.createCalendar(formatter 17 .parse(bbsBean.getEvYear() + bbsBean.getEvMonth() 18 + bbsBean.getEvDay() + bbsBean.getEvTime() 19 + bbsBean.getEvMinute()).getTime()); 20 } catch (ParseException e) { 21 log.error("エラーです。", e); 22 } 23 24 Calendar rmDate = null; 25 if (bbsBean.getR01() != null && bbsBean.getR01()) { 26 rmDate = Calendar.getInstance(); 27 } else { 28 try { 29 rmDate = UiUtils.createCalendar(formatter 30 .parse(bbsBean.getRDays() + bbsBean.getRHour() + "00") 31 .getTime()); 32 } catch (ParseException e) { 33 log.error("エラーです", e); 34 } 35 } 36 37 // 日時の大小をチェック 38 String errorMessage = ck10(getLocale(), 39 rmDate, evDate, 40 getText("エラーです")); 41 if (errorMessage != null) { 42 addErrorMessage(errorMessage); 43 } 44} 45} 46 47checkRng() { 48protected void checkRange(); 49} 50
オプション指定O<日付指定IならOK。そうでなければNGとしたいが、
オプション指定Oをどう判定するべきか。
↑
オプション指定Oは日時のフィールドで、日付指定Iは年月日時分のフィールドとのことですが
上記の比較はどのように行うのでしょうか?
オプション指定Oについての内容がいまいち理解できません、、
わかりにくくてすみません。
◆日付指定Kと日時指定の比較(OK例)
日付指定K 入力例)2020/08/20 10時
日時指定I 入力例)2020/08/21 10時
日付指定K< 日時指定I なのでOK
◆日時指定Iとオプション指定Oの比較(NG例)
日付指定K 入力例)2020/08/20 10時
日時指定I 入力例)2020/08/21 10時
オプション指定O 入力例)2週間前 10時(8/7 10時)
日付指定K<オプション指定O<日付指定I が成立しないのでNG
◆日時指定Iとオプション指定Oの比較(OK例)
日付指定K 入力例)2020/08/20 10時
日時指定I 入力例)2020/08/21 10時
オプション指定O 入力例)1日 10時(8/14 10時)
日付指定K<オプション指定O<日付指定I が成立するのでOK
オプションはアラート機能のつもりでした。
日付指定Iより過去、日付指定Kより未来を正としたいのですが、
おっしゃる通りオプション指定Oの入力規則が他と異なるのでどう扱うべきか思案しています。
日付指定I - オプション指定O 引いた日付が日付指定Kより大きければOK。でよいかと思っていますが、
その場合、プルダウンをどう取得するか困っています。
おそらく自分の思っていることが正しいのであれば、
「日付指定I - オプション指定O 引いた日付が日付指定Kより大きければOK」
でいいのだと思いますが、
◆日時指定Iとオプション指定Oの比較(OK例)
日付指定K 入力例)2020/08/20 10時
日時指定I 入力例)2020/08/21 10時
オプション指定O 入力例)1日 10時(8/14 10時)
↑
これの1日というのは何を指しているのでしょうか?
1日前だと(8/20 10時)になりますよね?
◆日時指定Iとオプション指定Oの比較(NG例)
日付指定K 入力例)2020/08/20 10時
日時指定I 入力例)2020/08/21 10時
オプション指定O 入力例)2週間前(14日前)の 10時(8/7 10時)
これは、2020/08/21 10時 ー 2週間前の10時(8/7 10時)
という意味ですよね?
>1日前だと(8/20 10時)になりますよね?
失礼しました。おっしゃる通りです。
>これは、2020/08/21 10時 ー 2週間前の10時(8/7 10時)という意味ですよね?
はい。その通りです
かしこまりました。
ちょっとコード書いてみますね。
すみません。遅くに。ありがとうございます。
回答1件
あなたの回答
tips
プレビュー