Java 迭代列表对象中的日期变量,并根据位置选择日期范围

Java 迭代列表对象中的日期变量,并根据位置选择日期范围,java,Java,我的情况是在列表中添加了日期。现在,我想选择前两个职位日期作为开始日期和结束日期,然后选择下两个职位作为开始日期和结束日期,依此类推。在我得到开始和结束日期之后,我需要找到两天之间的天数,并计算天数的金额 以下是列表对象中的日期 [2018-09-052018-09-1412018-09-292018-10-1412018-10-29] 2018-09-05作为起始日期和2018-09-13作为结束日期-查找这些日期之间的天数 2018-09-14作为起始日期和2018-09-28作为结束日期-

我的情况是在
列表中添加了日期。现在,我想选择前两个职位日期作为开始日期和结束日期,然后选择下两个职位作为开始日期和结束日期,依此类推。在我得到开始和结束日期之后,我需要找到两天之间的天数,并计算天数的金额

以下是列表对象中的日期

[2018-09-052018-09-1412018-09-292018-10-1412018-10-29]

  • 2018-09-05
    作为起始日期和
    2018-09-13
    作为结束日期-查找这些日期之间的天数
  • 2018-09-14
    作为起始日期和
    2018-09-28
    作为结束日期-查找这些日期之间的天数
  • 2018-09-29
    作为起始日期和
    2018-10-13
    作为结束日期-查找这些日期之间的天数
  • 2018-10-14
    作为起始日期和
    2018-10-28
    作为结束日期-查找这些日期之间的天数
  • 请帮我怎么找到它。
    提前感谢。

    我不完全理解您问题的第一部分关于选择日期的内容,但要找到日期之间的天数,您可以执行以下操作:

    import java.time.LocalDate;
    import java.time.Period;
    
    public class Application {
    
        public static void main(String[] args) {
            LocalDate startDate= LocalDate.now();
            LocalDate endDate= today.plusDays(6);
    
            Period period = Period.between(startDate, endDate);
            int difference = period.getDays();
        }
    }
    

    如果列表包含偶数个有效日期字符串,则以下代码将起作用
    将迭代列表,提取每对日期,并以天为单位计算差值:

    public static long getDaysDif(LocalDate fromDate, LocalDate toDate) {
        return ChronoUnit.DAYS.between(fromDate, toDate);
    }
    
    public static LocalDate getLocalDateFromString(String d, String format) {
        return LocalDate.parse(d, DateTimeFormatter.ofPattern(format));
    }
    
    public static void main(String[] args) {
        List<String> list = new ArrayList<>
                (Arrays.asList
                        ("2018-09-05", "2018-09-13", "2018-09-14", "2018-09-28", "2018-09-29", "2018-10-13"));
        for (int i = 0; i < list.size(); i+=2) {
            String strStart = list.get(i);
            String strEnd = list.get(i + 1);
    
            LocalDate dateStart = getLocalDateFromString(strStart, "yyyy-MM-dd");
            LocalDate dateEnd = getLocalDateFromString(strEnd, "yyyy-MM-dd");
    
            long dif = getDaysDif(dateStart, dateEnd);
    
            System.out.println(dif);
        }
    }
    

    列表将保持元素的顺序。您必须确保后续元素应大于第一个元素&小于下一个元素,否则您的逻辑将失败。请显示您尝试的代码,直到现在您的前任有一个包含5项的列表,但您的配对与列表项不匹配。有什么遗漏吗?@Shriram,我正在使用TreeSet将日期按顺序排序。@forpas,这是正确的顺序。实际上,当我计算天数差异时,我必须从结束日期减少一天。@Parthee因此,如果两个日期分别为“2018-09-05”和“2018-09-06”,我的代码将打印1。你想让它打印0吗?你可以使用钻石操作符。谢谢你的帮助。
    8
    14
    14