Javaで次のようなif文の書き方を教えてほしいです。
以下はthymeleafでの書き方です。
html
1th:if="${obj.flg} eq 1 and ${#dates.format(obj.startDate)} le ${#dates.format(#dates.createToday())} and (${obj.endDate} eq null or ${#dates.format(#dates.creatToday())} le ${#dates.format(obj.endDate)})"
この条件に「obj != null」という条件を追加したいです。
しかしthymeleafで上の書き方にこの条件を追加する書き方がわからないのと、そもそも上のif文はとても長くなっているのでJava側で制御して、その戻り値をthymeleafに渡して制御しようと思っています。
この条件をJava側で書こうと思ったらどうなるでしょうか?とくに日にちの比較のところでつまづいています。
「obj.endDate」または「obj.startDate」にはDate型で「2016-05-01」という形式で値が入っています。
イメージとしては以下のような感じです。
Java
1SampleEntity obj = new SampleEntity(); 2 3 public boolean getFlg(){ 4 if(obj == null){ 5 return false; 6 } 7 if(obj.flg == 1 && obj.startDate <= 今日の日にち && (obj.endDate == null || 今日の日にち <= obj.endDate ) ){ 8 return true; 9 } 10 return false; 11 }
このJavaの書き方のアドバイスをいただきたいと思います。もし分かる方がいればよろしくお願い致します。
追記
現在以下のような形で書いています。
問題点としましては現在の時間nowが「時間:分:秒」まで設定されてしまい、同じ日付でもイコールにならないときがあるというところです。
java
1import java.text.ParseException; 2import java.text.SimpleDateFormat; 3import java.util.Date; 4 5public class Sample { 6 7 public static void main(String[] args) throws ParseException { 8 Sample s = new Sample(); 9 System.out.println(s.getFlg()); 10 11 } 12 13 SampleEntity obj = new SampleEntity(); 14 15 public boolean getFlg() throws ParseException { 16 17 // SampleEntity obj = new SampleEntity(); 18 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 19 // obj.startDate = format.parse("2007-01-01"); 20 // obj.endDate = format.parse("2017-05-26"); 21 // obj.flg = 1; 22 23 Date now = new Date(); 24 now = format.parse(now.toString()); 25 int diff1 = now.compareTo(obj.startDate); 26 int diff2 = obj.endDate.compareTo(now); 27 28 if (obj == null) { 29 return false; 30 } 31 if (obj.flg == 1 && diff1 >= 0 && (obj.endDate == null || diff2 >= 0)) { 32 return true; 33 } 34 return false; 35 } 36} 37 38
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/25 21:13