当下为:日期 2015-9-13,
Android下:
Calendar calendar=Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
int weekOfMonth=calendar.get(Calendar.WEEK_OF_MONTH);
weekOfMonth 为3
Java下为
2,
而且感觉java更合理阿
在设置或获得WEEK_OF_MONTH或WEEK_OF_YEAR字段时,Calendar必须确定一个月或一年的第一个星期,以此作为参考点。一个月或一年的第一个星期被确定为开始于getFirstDayOfWeek()的最早七天,它最少包含那一个月或一年的getMinimalDaysInFirstWeek()天数。第一个星期之前的各星期编号为 ...、-1、0;之后的星期编号为2、3、...。注意,get() 返回的标准化编号方式可能有所不同。例如,特定Calendar子类可能将某一年第1个星期之前的那个星期指定为前一年的第n个星期。日历字段解析在计算日历字段中的日期和时间时,可能没有足够的信息用于计算(例如只有年和月,但没有日),或者可能有不一致的信息( 例如“Tuesday, July 15, 1996”(格林威治时间)——实际上,1996年7月15日是星期一)。Calendar将解析日历字段值,以便用以下方式确定日期和时间。
看下你的参考点
应该是一样的,你仔细调试下你的代码,按理说是3,因为一周从周日开始。
不是第三周么,android的是第三周呀,可能计算方式不一样吧……
确实是这样的,java setMinimalDaysInFirstWeek默认是1,android 默认是4,从而导致calendar.get(Calendar.WEEK_OF_MONTH);结果不一致。
如果设置setMinimalDaysInFirstWeek ()为1-3,那么2009年1月31号是这第月的第五周.
如果设置setMinimalDaysInFirstWeek ()为4-7,那么2009年1月31号是这第月的第四周,因为第一周不满4天,那就更加不满七天了.
refs:
http://blog.csdn.net/wienne0417/article/details/4816890
每周的第一天是星期日,所以Andorid显示3也是合理的啊。