通算週を求めるサンプル

  1. /**
  2.  * 指定された日付(calcDate)が、指定された日付(from)から第何週目であるかを計算して返します。
  3.  * 起点となる日付(第1引数)よりも、過去日付(第2引数)が指定された場合は、0を返します。
  4.  * @param from 通算週の起点となる日付
  5.  * @param calcDate 何週目かを求めたい日付
  6.  * @return 通算週番号
  7.  *          2014/01/01を起点とした場合、
  8.  *          2014/01/01は第1週
  9.  *          2014/01/02は第1週
  10.  *          2014/01/08は第2週
  11.  */
  12. public static int getTotalWeekNumber(Date from, Date calcDate) {
  13.     Calendar calFrom = Calendar.getInstance();
  14.     calFrom.setTime(from);
  15.     Calendar calTo = Calendar.getInstance();
  16.     calTo.setTime(calcDate);
  17.     // 2つの日付の差を求める(ミリ秒)
  18.     long difference = calTo.getTime().getTime() - calFrom.getTime().getTime();
  19.     // 起点となる日付よりも過去が指定されている場合は0として終了
  20.     if (difference < 0) {
  21.         return 0;
  22.     }
  23.     // ミリ秒単位を日単位に変換
  24.     int diffDay = (int) (difference / 1000 / 60 / 60 / 24);
  25.     // 通算週
  26.     int totalWeekNumber = diffDay / 7;
  27.     // 第1週から開始なので、+1する
  28.     return totalWeekNumber + 1;
  29. }

戻る