1. WEEK_OF_YEAR 一年中的第幾周
由於西方的一周指的是:星期日-星期六,星期日是一周的第一天,星期六是一周的最后一天,
所以,使用 calendar.get(Calendar.WEEK_OF_YEAR) 時應該注意一周的開始應該是哪一天
如果一周的開始是星期一,那么可以進行如下操作:
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周時,將以下一年的第一周來計算
(跨年問題:跨年的那個星期獲取 “WEEK_OF_YEAR” 得到的結果總是“1”,)
如
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 通過計算得到:1
2. MONTH 月份
也是因為西方文化的原因,一年的第一個月是從“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());
