1. 程式人生 > >java獲取當前周次

java獲取當前周次

  今天之前開發的獲取周次及這周次的開始時間及結束時間有問題,跟了下程式碼,原來是之前的方法獲取的當前周次是1(當前周次的起始時間是2010-12-27,結束時間是2011-01-02),而當前年份是2010。最開始大腦思維混亂,一直想著如何判斷何時把年份加1,後來一同事一指點(獲取當前日期所在周的第一天,即當前周次開始日期;當前日期所在周的最後一天,也就是當前周次的最後日期),一切都解決了。

首先先解釋一些方法

getMinimalDaysInFirstWeek()
          獲取一年中第一個星期所需的最少天數,例如,如果定義第一個星期包含一年第一個月的第一天,則此方法將返回 1。

    public static int getWeekNumber(){ 
       Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);

        calendar.setTime(new Date());
        return calendar.get(Calendar.WEEK_OF_YEAR);
   
    }此方法返回結果是1(2011年第1周)。如果加上一句calendar.setMinimalDaysInFirstWeek(7);返回結果是52(2010年第52周)

 /**
  * 取得指定日期所在周的第一天 

  */
  public static Date getFirstDayOfWeek(Date date) {
  Calendar c = new GregorianCalendar();
  c.setFirstDayOfWeek(Calendar.MONDAY);
  c.setTime(date);
  c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
  return c.getTime ();
  }

  /**
  * 取得指定日期所在周的最後一天 
   */
  public static Date getLastDayOfWeek(Date date) {
  Calendar c = new GregorianCalendar();
  c.setFirstDayOfWeek(Calendar.MONDAY);
  c.setTime(date);
  c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
  return c.getTime();
  }

然後我根據獲取的周次和當前時間所在周的最後一天判斷年份(year的值是當前年份)

if(weekNumber==1 && Integer.parseInt(endDate.substring(0, 4))==(year+1)){
   year=year+1;
  }

得以解決。

有的時候想問題,正的不通,真得反著來!思路要開闊