java 获取连续签到天数

      public static void main(String[] args) throws ParseException {
        List<SignIn> signInList = new ArrayList<>();
        signInList.add(new SignIn("2019-12-13"));
        signInList.add(new SignIn("2019-12-12"));
        signInList.add(new SignIn("2019-12-11"));
        signInList.add(new SignIn("2019-12-10"));
        signInList.add(new SignIn("2019-12-03"));
        signInList.add(new SignIn("2019-12-09"));
        signInList.add(new SignIn("2019-12-07"));
        signInList.add(new SignIn("2019-12-06"));
        signInList.add(new SignIn("2019-12-05"));
        int continuousSignInDay = getContinuousSignInDay(signInList);
        System.out.println("连续签到日期:"+ continuousSignInDay);

    }
    
    
    private static int getContinuousSignInDay(List<SignIn> signInList) throws ParseException {
        //continuousDay 连续签到数
        int continuousDay = 1;
        boolean todaySignIn = false;
// today 当天日期 Date today
= new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String todays=sdf.format(today); for (int i = 0; i < signInList.size(); i++) { SignIn signIn = signInList.get(i); int intervalDay = distanceDay(sdf.parse(todays), signIn.getSignInDay()); //当天签到 if (intervalDay == 0 && i == 0) { todaySignIn = true; }else if (intervalDay == continuousDay) { continuousDay++; }else { //不连续,终止判断 break; } } if (!todaySignIn) { continuousDay--; } return continuousDay; } //判断当天日期 与以往签到日期相隔天数 private static int distanceDay(Date largeDay, Date smallDay) { int day = (int) ((largeDay.getTime() - smallDay.getTime()) / (1000 * 60 * 60 * 24));return day; }

SignIn 实体类:

 

public class SignIn {

    private Date signInDay; 
    public SignIn(){
    }

    public SignIn(String day) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        setSignInDay(sdf.parse(day));
    }

    public Date getSignInDay() {
        return signInDay;
    }

    public void setSignInDay(Date signInDay) {
        this.signInDay = signInDay;
    }

}
posted @ 2019-12-13 13:39  一场屠夫的战争  阅读(2756)  评论(0编辑  收藏  举报