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;
}
得以解決。
有的時候想問題,正的不通,真得反著來!思路要開闊