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());