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

Java 如何从指定日期开始检查连续6天?,java,jakarta-ee,Java,Jakarta Ee,我被困在工作中,那我怎么能连续6天检查呢 例如: 如果指定日期为:2011年1月1日 我想从2011年1月1日起连续6天查看可用日期列表。 在找到连续的一天之后,它应该继续执行列表中的下一个连续链 并跟踪连续6天的查找次数和时间 如果有人能帮助我,那将对我很有帮助 提前感谢。这段代码将以天为单位显示两个日期之间的差异: import java.util.*; public class DateDifference { public static void main(String args

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

例如:

如果指定日期为:2011年1月1日

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

并跟踪连续6天的查找次数和时间

如果有人能帮助我,那将对我很有帮助


提前感谢。

这段代码将以天为单位显示两个日期之间的差异:

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

在将其合并到代码中以使其满足您的需要时,您应该没有问题。代码取自。

这段代码以天为单位显示两个日期之间的差异:

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));
         }
   }
在将其合并到代码中以使其满足您的需要时,您应该没有问题。代码取自。

Calendar lowerCal=Calendar.getInstance();
下限设置(日历月,0);
较低的日历设置(日历日期,1);
下卡套(日历年,2011年);
//将其他参数设置为0
Calendar higherCal=Calendar.getInstance();
高级卡设置(日历月,0);
高级卡设置(日历日期,1);
higherCal.set(日历年,2011年);
higherCal.add(Calendar.DATE,6);
//将其他参数设置为0
Calendar calToCheck=Calendar.getInstance();
如果(计算检查比较(高卡)=0){
//对
}
另请参见

Calendar lowerCal=Calendar.getInstance();
下限设置(日历月,0);
较低的日历设置(日历日期,1);
下卡套(日历年,2011年);
//将其他参数设置为0
Calendar higherCal=Calendar.getInstance();
高级卡设置(日历月,0);
高级卡设置(日历日期,1);
higherCal.set(日历年,2011年);
higherCal.add(Calendar.DATE,6);
//将其他参数设置为0
Calendar calToCheck=Calendar.getInstance();
如果(计算检查比较(高卡)=0){
//对
}
另请参见


正如我在评论中所说的,现在还不清楚你真正想要的是什么——但几乎可以肯定的是,使用它会让你的生活比标准图书馆更轻松。它只是一个更好的日期/时间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);
}

正如我在评论中所说,现在还不清楚你真正想要的是什么——但几乎可以肯定的是,使用它会让你的生活比标准的图书馆更轻松。它只是一个更好的日期/时间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);
}

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

 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);
    }
List dateList=new ArrayList();
//在这里添加您的日期
集合。排序(日期列表);
整数计数=0;
Date-previousDate=null;
List datesGroup=new ArrayList();
用于(日期:日期列表){
如果(上一个日期==null){
previousDate=新日期();
计数++;
}否则{
long diff=date.getTime()-previousDate.getTime();
如果(差异==86400000){
计数++;
}否则{
计数=0;
datesGroup.clear();
}
}
datesGroup.add(日期);
previousDate.setTime(date.getTime());
如果(计数=6){
打破
}
}
对于(日期:datesGroup){
System.out.println(“排序日期:+日期”);
}

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

 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);
    }
List dateList=new ArrayList();
//在这里添加您的日期
集合。排序(日期列表);
整数计数=0;
Date-previousDate=null;
List datesGroup=new ArrayList();
用于(日期:日期列表){
如果(上一个日期==null){
previousDate=新日期();
计数++;
}否则{
long diff=date.getTime()-previousDate.getTime();
如果(差异==86400000){
计数++;
}否则{
计数=0;
datesGroup.clear();
}
}
datesGroup.add(日期);
previousDate.setTime(date.getTime());
如果(计数=6){
打破
}
}
对于(日期:datesGroup){
System.out.println(“排序日期:+日期”);
}

i<7,它不应该是
i<6
@org.life.java:在我移动我的评论之后。这取决于OP是否要检查“当前日期和子序列6天”(即总共7天)。
i<7,它不应该是
i<6
@org.life.java:在我移动我的评论之后。这取决于OP是否要检查“当前日期和后续6天”(即总共7天)。您好,Jon Skeety我们的理解有些不同,但我想检查连续6天,如果用户在所有连续6天都在场,并且在第7天,那么第7天将被视为加班等,同时在可用日期列表中充实exis。请编辑您的问题,以提供示例输入和所需输出。这会让你更容易得到帮助。例如,如果已知输入已排序,则会产生差异。您好,Jon Skeety我们的理解有些不同,但我想检查连续6天,如果用户在所有连续6天都在场,并且在第7天,那么第7天将被视为加班等,同时在可用日期列表中充实exis。请编辑您的问题,以提供示例输入和所需输出。这会让你更容易得到帮助。例如,如果已知输入为sor,则会产生差异