在列表对象中迭代Date变量,然后根据排名

时间:2018-11-01 12:59:10

标签: java

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

这是列表对象中的日期。

[2018-09-05, 2018-09-14, 2018-09-29, 2018-10-14, 2018-10-29]

  1. 2018-09-05作为开始日期,2018-09-13作为结束日期-查找这些日期之间的天数。
  2. 2018-09-14作为开始日期,2018-09-28作为结束日期-查找这些日期之间的天数。
  3. 2018-09-29作为开始日期,2018-10-13作为结束日期-查找这些日期之间的天数。
  4. 2018-10-14作为开始日期,2018-10-28作为结束日期-查找这些日期之间的天数。

请帮助我找到它。 预先感谢。

2 个答案:

答案 0 :(得分:2)

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

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

将打印:

8
14
14

答案 1 :(得分:0)

我不完全了解您选择日期的问题的第一部分,但是要查找日期之间的天数,您可以执行以下操作:

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