home wiki.fukuchiharuki.me
Menu

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*キーワード [#m838c286]
-Java
-Calendar
-Date
-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