- 追加された行はこの色です。
- 削除された行はこの色です。
- Java/前週や前月の開始日と終了日を計算する へ行く。
- Java/前週や前月の開始日と終了日を計算する の差分を削除
*キーワード [#m838c286] -Java -Calendar -java.util.Date *関連 [#j9c2198b] -[[Java/Date型とString型を相互に変換する]] *概要 [#n5a98b2d] 今日を基準日として、前週や前月の開始日と終了日を計算します。 ~ ※月曜始まりとする *方法 [#s8e3e5a8] まずはこれだけ用意して、 Calendar today = Calendar.getInstance(); Calendar start = Calendar.getInstance(); Calendar end = Calendar.getInstance(); today.setTime(new java.util.Date()); **今週 [#q4678fff] int diff = (today.get(Calendar.DAY_OF_WEEK) + 5) % 7; start.setTime(today.getTime()); start.add(Calendar.DATE, -diff); end.setTime(start.getTime()); end.add(Calendar.DATE, 6); **前週 [#o9b07ade] int diff = (today.get(Calendar.DAY_OF_WEEK) + 5) % 7 + 7; start.setTime(today.getTime()); start.add(Calendar.DATE, -diff); end.setTime(start.getTime()); end.add(Calendar.DATE, 6); **前々週 [#c2c426b2] int diff = (today.get(Calendar.DAY_OF_WEEK) + 5) % 7 + 7*2; start.setTime(today.getTime()); start.add(Calendar.DATE, -diff); end.setTime(start.getTime()); end.add(Calendar.DATE, 6); **今月 [#i07f63c9] int diff = (today.get(Calendar.DATE)) - 1; start.setTime(today.getTime()); start.add(Calendar.DATE, -diff); end.setTime(start.getTime()); end.add(Calendar.MONTH, 1); end.add(Calendar.DATE, -1); **前月 [#e0d96122] int diff = (today.get(Calendar.DATE)) - 1; start.setTime(today.getTime()); start.add(Calendar.DATE, -diff); start.add(Calendar.MONTH, -1); end.setTime(start.getTime()); end.add(Calendar.MONTH, 1); end.add(Calendar.DATE, -1); **前々月 [#za234e8f] int diff = (today.get(Calendar.DATE)) - 1; start.setTime(today.getTime()); start.add(Calendar.DATE, -diff); start.add(Calendar.MONTH, -1*2); end.setTime(start.getTime()); end.add(Calendar.MONTH, 1); end.add(Calendar.DATE, -1); ~ 最後に、 start.set(Calendar.HOUR_OF_DAY, 0); start.set(Calendar.MINUTE, 0); start.set(Calendar.SECOND, 0); end.set(Calendar.HOUR_OF_DAY, 23); end.set(Calendar.MINUTE, 59); end.set(Calendar.SECOND, 59); *解説 [#f43f8251] [[Calendar#add(int, int)>http://e-class.center.yuge.ac.jp/jdk_docs/ja/api/java/util/Calendar.html#add%28int,%20int%29]]で足したり引いたりするだけです。 最初の引数で月や日を選択することができるので割と自在です。 *参考 [#n1675703] -http://e-class.center.yuge.ac.jp/jdk_docs/ja/api/java/util/Calendar.html