如何从指定日期连续6天检查?

时间:2011-01-13 07:19:13

标签: java java-ee

我被困在工作中,我怎么能连续6天检查?

例如:

如果指定的日期是:01/01/2011

我想从2011年1月1日起连续6天检查可用日期列表。 在找到连续的一天之后,它应该继续下一个连续的链条,这可以在列表中找到。

并跟踪连续6天的发现时间和时间?

如果有人可以帮助我,对我来说非常有帮助......

提前致谢。

4 个答案:

答案 0 :(得分:2)

正如我在评论中所说,目前还不清楚你真正追求的是什么 - 但几乎某些使用Joda Time将使你的生活比标准库更容易。它只是一个更好的日期/时间API,可以产生更清晰的代码。

例如,这将迭代一个日期及其后的6个日期:

LocalDate date = new LocalDate(2010, 1, 1); // January is 1 in Joda. How novel.
for (int i = 0; i < 7; i++)
{
    // Do something with date here - check it or whatever
    date = date.plusDays(1);
}

你也可以用稍微不同的方式写这个:

LocalDate start = new LocalDate(2010, 1, 1);
LocalDate end = start.plusDays(7);
for (LocalDate date = start; date.isBefore(end); date = date.plusDays(1))
{
    // Do something with date here
}

答案 1 :(得分:1)

Calendar lowerCal = Calendar.getInstance();
        lowerCal.set(Calendar.MONTH, 0);
        lowerCal.set(Calendar.DATE, 1);
        lowerCal.set(Calendar.YEAR, 2011);
        //set other param 0

        Calendar higherCal = Calendar.getInstance();
        higherCal.set(Calendar.MONTH, 0);
        higherCal.set(Calendar.DATE, 1);
        higherCal.set(Calendar.YEAR, 2011);
        higherCal.add(Calendar.DATE, 6);
        //set other param 0
        Calendar calToCheck = Calendar.getInstance();
        if (calToCheck.compareTo(higherCal) <= 0   &&  calToCheck.compareTo(lowerCal) >= 0 ){
                //YES
        }

另见

答案 2 :(得分:1)

对日期列表进行排序,然后使用您的逻辑

 List<Date> dateList = new ArrayList<Date>();
    //add your dates here
    Collections.sort(dateList);
    int count = 0;
    Date previousDate = null;
    List<Date> datesGroup = new ArrayList<Date>();
    for (Date date : dateList) {
        if (previousDate == null) {
            previousDate = new Date();
            count++;
        } else {
            long diff = date.getTime() - previousDate.getTime();
            if (diff == 86400000) {
                count++;
            } else {
                count = 0;
                datesGroup.clear();
            }
        }
        datesGroup.add(date);
        previousDate.setTime(date.getTime());
        if (count == 6) {
            break;
        }
    }
    for (Date dates : datesGroup) {
        System.out.println("dates sorted : " + dates);
    }

答案 3 :(得分:0)

这段代码为您提供了两天的日期差异:

import java.util.*;
 public class DateDifference {
   public static void main(String args[]){
     DateDifference difference = new DateDifference();
     }
     DateDifference() {
     Calendar cal1 = new GregorianCalendar();
     Calendar cal2 = new GregorianCalendar();

     cal1.set(2008, 8, 1); 
     cal2.set(2008, 9, 31);
     System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));
     }
     public int daysBetween(Date d1, Date d2){
     return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
         }
   }

将它合并到您的代码中应该没有问题,这样它就能满足您的需求。代码取自here