回答編集履歴
4
Calendarのまま判定する方法
answer
CHANGED
@@ -66,4 +66,29 @@
|
|
66
66
|
|
67
67
|
return diff1 >= 0 && diff2 >= 0;
|
68
68
|
}
|
69
|
-
```
|
69
|
+
```
|
70
|
+
|
71
|
+
今更追加(17/09/17)。
|
72
|
+
- 日付比較するメソッドを作る
|
73
|
+
```java
|
74
|
+
public boolean getFlg() throws ParseException {
|
75
|
+
|
76
|
+
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
77
|
+
Date startDate = sdf.parse("2007-01-01");
|
78
|
+
Date endDate = sdf.parse("2017-05-26");
|
79
|
+
|
80
|
+
Calendar from = Calendar.getInstance(),
|
81
|
+
today = Calendar.getInstance(),
|
82
|
+
to = Calendar.getInstance();
|
83
|
+
from.setTime(startDate);
|
84
|
+
to.setTime(endDate);
|
85
|
+
|
86
|
+
return compareByDate(from, today) <= 0 && compareByDate(today, to) <= 0;
|
87
|
+
}
|
88
|
+
|
89
|
+
public static int compareByDate(Calendar c1, Calendar c2) {
|
90
|
+
int i = Integer.compare(c1.get(Calendar.YEAR), c2.get(Calendar.YEAR));
|
91
|
+
if (i != 0) return i;
|
92
|
+
return Integer.compare(c1.get(Calendar.DAY_OF_YEAR), c2.get(Calendar.DAY_OF_YEAR));
|
93
|
+
}
|
94
|
+
```
|
3
修正
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
int diff1 = today.compareTo(from);
|
19
19
|
int diff2 = to.compareTo(today);
|
20
20
|
|
21
|
-
return diff1 >= 0 && diff2 >
|
21
|
+
return diff1 >= 0 && diff2 > 0;
|
22
22
|
}
|
23
23
|
```
|
24
24
|
|
@@ -31,7 +31,7 @@
|
|
31
31
|
long endDate = sdf.parse("2017-05-26").getTime() + 24L * 60L * 60L * 1000L;
|
32
32
|
long now = new Date().getTime();
|
33
33
|
|
34
|
-
return startDate <= now && now <
|
34
|
+
return startDate <= now && now < endDate;
|
35
35
|
}
|
36
36
|
```
|
37
37
|
|
2
現在時刻関係のDateの処理が意味なかったので削除
answer
CHANGED
@@ -7,13 +7,11 @@
|
|
7
7
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
8
8
|
Date startDate = sdf.parse("2007-01-01");
|
9
9
|
Date endDate = sdf.parse("2017-05-26");
|
10
|
-
Date now = new Date();
|
11
10
|
|
12
11
|
Calendar from = Calendar.getInstance(),
|
13
12
|
today = Calendar.getInstance(),
|
14
13
|
to = Calendar.getInstance();
|
15
14
|
from.setTime(startDate);
|
16
|
-
today.setTime(now);
|
17
15
|
to.setTime(endDate);
|
18
16
|
to.add(Calendar.DATE, 1); //終了日時を翌日に
|
19
17
|
|
1
不要な例外宣言を削除、方法をもう一つ追加\(long値比較\)
answer
CHANGED
@@ -23,10 +23,25 @@
|
|
23
23
|
return diff1 >= 0 && diff2 >= 0;
|
24
24
|
}
|
25
25
|
```
|
26
|
+
|
27
|
+
- getTime()で得られるlong値で比較。その際に終了日時のほうに1日相当のミリ秒を加算する
|
28
|
+
```java
|
29
|
+
public boolean getFlg() throws ParseException {
|
30
|
+
|
31
|
+
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
32
|
+
long startDate = sdf.parse("2007-01-01").getTime();
|
33
|
+
long endDate = sdf.parse("2017-05-26").getTime() + 24L * 60L * 60L * 1000L;
|
34
|
+
long now = new Date().getTime();
|
35
|
+
|
36
|
+
return startDate <= now && now <= endDate;
|
37
|
+
}
|
38
|
+
```
|
39
|
+
|
40
|
+
|
26
41
|
- 逆転の発想。文字列に変換して比較する
|
27
42
|
日付の後先と文字列化した日付の後先は一致する
|
28
43
|
```java
|
29
|
-
public boolean getFlg()
|
44
|
+
public boolean getFlg() {
|
30
45
|
|
31
46
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
32
47
|
String startDate = "2007-01-01";
|
@@ -42,7 +57,7 @@
|
|
42
57
|
|
43
58
|
- [LocalDate](https://docs.oracle.com/javase/jp/8/docs/api/java/time/LocalDate.html)を使用(Java8以降限定)
|
44
59
|
```java
|
45
|
-
public boolean getFlg()
|
60
|
+
public boolean getFlg() {
|
46
61
|
|
47
62
|
LocalDate startDate = LocalDate.parse("2007-01-01");
|
48
63
|
LocalDate endDate = LocalDate.parse("2017-05-26");
|