本人在开发 android过程中,有个需求是根据当前时间获取是本年第几周。刚开始采用java的传统方法获取:
//代码编写时间:2015年11月17日14:37:52
GregorianCalendar cal = new GregorianCalendar(); //当前时间
cal.setMinimalDaysInFirstWeek(7); //第一周最少包含七天
cal.setFirstDayOfWeek(Calendar.MONDAY);//周一为一周第一天
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());//取开始时间
int weeks=cal.get(Calendar.WEEK_OF_YEAR);
System.out.println(weeks);
以上代码在java环境中获取的weeks的值是46,然而在android环境中获取的weeks的值是45。匪夷所思
解决方法:
//代码编写时间:2015年11月17日14:40:12
Calendar cal = Calendar.getInstance();//这一句必须要设置,否则美国认为第一天是周日,而我国认为是周一,对计算当期日期是第几周会有错误
cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 每周从周一开始
cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
cal.setTime(new Date());
int weeks=cal.get(Calendar.WEEK_OF_YEAR);
System.out.println(weeks);
这样 在java 和 android 环境中获取的weeks的值是一致的,都是46。问题解决。。。