java判断签到是否连续_java 判断一周连续签到几天

对于不少app来说,签到是一个很常见的功能。连续签到多少天能够获得一些相应的奖励,最近我在项目里也遇到了相似的需求,但不同的是,我的需求是获取这一周连续签到的天数。

实现这一功能相对简单,只需运用到对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 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也就是一周连续签到的天数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值