1. WEEK_OF_YEAR 一年中的第幾周java
因爲西方的一週指的是:星期日-星期六,星期日是一週的第一天,星期六是一週的最後一天,spa
因此,使用 calendar.get(Calendar.WEEK_OF_YEAR) 時應該注意一週的開始應該是哪一天orm
若是一週的開始是星期一,那麼能夠進行以下操做:blog
Calendar calendar=Calendar.getInstance();
calendar.set(2016,9,9); //2016-10-09 這一天是星期日
long week1=calendar.get(Calendar.WEEK_OF_YEAR);
calendar.setFirstDayOfWeek(Calendar.MONDAY); //設置一週的第一天是星期幾
calendar.set(2016,9,9); / / 必定要在calendar.setFirstDayOfWeek();方法後從新設置一遍日期,不然無效
long week2=calendar.get(Calendar.WEEK_OF_YEAR);
注意:一年有52個周,calendar.get(Calendar.WEEK_OF_YEAR);的取值範圍是:「1-52」,因此當一年中最後的幾天超過52周,進入第53周時,將如下一年的第一週來計算get
(跨年問題:跨年的那個星期獲取 「WEEK_OF_YEAR」 獲得的結果老是「1」,)it
如form
calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.set(2016,11,31); //2016-12-31 long week=calendar.get(Calendar.WEEK_OF_YEAR); //week= 1
2016-12-31 經過計算獲得:1class
2. MONTH 月份date
也是由於西方文化的緣由,一年的第一個月是從「0」開始算起的,一年中12個月份分別是:「0-11」,12指的是下一年的一月份方法
calendar.set(2016,12,9); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); String date=format.format(calendar.getTime());
得到的結果是:2017-01-09
因此 爲 calendar 設置「月份(MONTH)」時須要 「-1」
經過 calendar 獲取「月份(month)」時須要 「+1」
3.DAY_OF_WEEK 星期幾
String[] weeks = new String[]{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
int index=calendar.get(Calendar.DAY_OF_WEEK);
String weekDay=weeks[index-1];
返回的是周幾,取值爲「1-7」 指的是 「星期日-星期六」,因此獲取星期幾時須要 「-1」
(這個值跟一週的第一天是星期幾無關)
4. SET() 方法
set(Calendar.DAY_OF_WEEK,Calendar.MONDAY):設置日期(calendar)爲日期所在周的週一的日期(能夠獲取日期所在周的週一的日期)
calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); String date=format.format(cal.getTime());