写一个连续签到功能

        写一个连续签到功能,核心在判断签到几天,弄了1个半小时写好这个方法,我的算法不行。不知有更好的方法否,是否可在SQL中就判断了?

/**
	 * 计算连续签到
	 * 1.签到之后才开始调用该方法,所以l中的最新日期为当天
	 * 2.参数l中的日期必须是按签到日期降序排列
 	 * 3.参数l中的日期格式是java.sql.Date或满足yyyy-MM-dd的,不带小时分钟秒
	 */
	 public static int calRowDate(List<Date> l){
		 if(l==null || l.size()==0) return 0;
		 int num = 1;
		 int size=0;
		 //判断最新的签到是不是当天,如不是,返回0
		 Date date = new Date();
		 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		 Date cd = l.get(0);//取l中最新日期
		 if(!(sdf.format(date).equals(sdf.format(cd)))){
			 return 0;
		 }
		 if(l.size()==0){
			 return 1;
		 }
		 long l1,l2;
		 while(size+1<l.size()){
			 l1 = l.get(size).getTime();
			 l2 = l.get(size+1).getTime();
			 if(l1-l2==1000*60*60*24){
				 num++;
				 size = size+1;
			 }else{
				 break;
			 }
		 }
		 return num;
	 }
	 public static void main(String[] args) throws Exception {
		List<Date> l = new ArrayList<Date>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		l.add(sdf.parse("2013-06-08"));
		l.add(sdf.parse("2013-06-07"));
		l.add(sdf.parse("2013-06-06"));
		l.add(sdf.parse("2013-06-05"));
		System.out.println(calRowDate(l));
	 }

你可能感兴趣的:(写一个连续签到功能)