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; } }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM