java 判断一周连续签到几天
2017-08-16 22:01
141 查看
对于不少app来说,签到是一个很常见的功能。连续签到多少天能够获得一些相应的奖励,最近我在项目里也遇到了相似的需求,但不同的是,我的需求是获取这一周连续签到的天数。
实现这一功能相对简单,只需运用到对Calendar类时间操作。
首先先创建签到的时间数组,在这些数据上判断它们是否是在一周之内连续的
然后需对这些String类型的时间数据进行转换,转换
在Calendar类中Calendar.getTimeInMillis()方法是获取两个时间的微秒级的时间差,因此当判定两时间是否相连的两天时,可以运用此方法。在本例子中:
其中data1.get(i).get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY判断的是当前这一时间是否为周日,因为在我的项目里周日是一周的第一天,当周日签到时,会将之前的签到数清除,也就是count=1;其中if(count==7){break;}的作用是:当你从上周六一直签到至这周六时,算本周签到数时应当是上周日至本周六的7天,也就是count=7;当若没有这个if判断的,i就会继续减,此时count就会被赋值为1,签到数也就不对。最后return count也就是一周连续签到的天数。
实现这一功能相对简单,只需运用到对Calendar类时间操作。
首先先创建签到的时间数组,在这些数据上判断它们是否是在一周之内连续的
String[] mData = {"2017-06-23 00:00:00", "2017-06-24 00:00:00", "2017-06-25 00:00:00", "2017-06-26 00:00:00", "2017-06-27 00:00:00", "2017-06-21 00:00:00", "2017-06-29 00:00:00", "2017-06-30 00:00:00", "2017-07-01 00:00:00"};
然后需对这些String类型的时间数据进行转换,转换
List<Calendar> data1 = new ArrayList<>();
// 设置传入的时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd H:m:s"); Date startDate = null; try { for (int i = 0; i < mData.length; i++) { Calendar c = Calendar.getInstance(); startDate = dateFormat.parse(mData[i]); // 对 calendar 设置为 date 所定的日期 c.setTime(startDate); data1.add(c); } } catch (ParseException e) { e.printStackTrace(); }
在Calendar类中Calendar.getTimeInMillis()方法是获取两个时间的微秒级的时间差,因此当判定两时间是否相连的两天时,可以运用此方法。在本例子中:
int count==1; //计算一周签到数(在本例中至少为1)
public int join() { for (int i = data1.size() - 1; i > 1; i--) { //判断一周连续 if ((data1.get(i).getTimeInMillis() - data1.get(i - 1).getTimeInMillis()) / (1000 * 60 * 60 * 24) == 1) { if (data1.get(i).get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { count++; if(count==7){ break; } } else { count = 1; break; } } else { break; } } return count; }
其中data1.get(i).get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY判断的是当前这一时间是否为周日,因为在我的项目里周日是一周的第一天,当周日签到时,会将之前的签到数清除,也就是count=1;其中if(count==7){break;}的作用是:当你从上周六一直签到至这周六时,算本周签到数时应当是上周日至本周六的7天,也就是count=7;当若没有这个if判断的,i就会继续减,此时count就会被赋值为1,签到数也就不对。最后return count也就是一周连续签到的天数。
相关文章推荐
- java 判断日期相差几天
- java技术支持 计算几月有几天和判断是否为闰年的工具类
- Java 判断2个字符串日常相差几天
- Java生物信息- 判断碱基有没有连续的重复序列
- java中如何判断两个日期是否是同一周
- JAVA学习笔记_判断二位数组是否存在连续4个数的值相同
- java 判断一周第几天
- Java片段:判断日期是一周中的第几天
- java连续多位相同字符判断的正则表达式
- java判断循环数组是否连续并获取不连续的项以及重复项
- 用java判断一个int数组是否连续
- java常用类练习04(计算天数间隔和周数、输出21世纪的闰年、大小写字母转换、判断输出是否为闰年该月有几天星期几)
- java 判断一个数组中的数值是否连续相邻的方法
- java判断循环数组是否连续并获取不连续的项以及重复项
- Java常用的util--TimeUtil(判断是否为数字类型,获取当前日期前后几天的日期等)
- java判断循环数组是否连续并获取不连续的项以及重复项
- java 判断一个数组中的数值是否连续相邻
- Java判断List中相同值元素的个数
- 05_java基础加强(数组、判断语句、循环结构、进制转换、常用类等)
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”