关于java 和 android 下获取指定时间是本年第几周不一致问题的解决方法

本人在开发 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。匪夷所思

解决方法:

//代码编写时间:2015111714: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。问题解决。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值