如何在java中实现日期分割/插入日期

72qzrwbm  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(421)

这里java需要读取一个文件,该文件包含契约、成员、开始日期和结束日期。如果存在日期分割/中断日期,则需要在合同级别的目标文件中填充该日期。下面提供了源文件和目标文件的示例以及预期的结果。
在本例中,合同a在成员3中有拆分,因此在目标文件中,剩余的日期范围需要在合同级别填充
合同b在成员3和4中有拆分,因此在目标文件中缺少的日期范围和剩余日期范围需要在合同级别填充。
源文件:

Contract  Member    StartDate     EndDate
A           1      01-Jan-2020   31-Dec-2020
A           2      01-Jan-2020   31-Dec-2020
A           3      01-Jan-2020   24-Oct-2020
A           4      01-Jan-2020   31-Dec-2020

B           1      01-Jan-2020   31-Dec-2020
B           2      01-Jan-2020   31-Dec-2020
B           3      01-Jan-2020   04-Mar-2020
B           3      01-Apr-2020   31-Dec-2020
B           4      01-Jan-2020   04-Mar-2020
B           4      01-Apr-2020   31-Dec-2020

目标文件:

Contract   StartDate      EndDate
A        01-Jan-2020    24-Oct-2020
A        25-Oct-2020    31-Dec-2020

B        01-Jan-2020    04-Mar-2020
B        05-Mar-2020    31-Mar-2020
B        01-Apr-2020    31-Dec-2020
4dbbbstv

4dbbbstv1#

下一个范围在当前范围的最后一天之后开始。您可以迭代日期范围字符串列表,并查找不符合此规则的连续范围。此时,使用此规则创建缺少的范围并中断循环。
演示:

import java.time.LocalDate;
import java.util.List;

class Main {
    public static void main(String[] args) {
        List<String> dateRangeList = List.of("2019-01-01 2019-02-01", "2019-02-02 2019-04-04", "2019-06-01 2019-07-01");
        for (int i = 0; i < dateRangeList.size() - 1; i++) {
            String[] currentRange = dateRangeList.get(i).split(" ");
            String[] nextRange = dateRangeList.get(i + 1).split(" ");
            LocalDate oneDayAfterLastDateOfCurrentRange = LocalDate.parse(currentRange[1]).plusDays(1);
            LocalDate firstDateOfNextRange = LocalDate.parse(nextRange[0]);
            if (!oneDayAfterLastDateOfCurrentRange.equals(firstDateOfNextRange)) {
                String missingDateRange = oneDayAfterLastDateOfCurrentRange.toString() + " "
                        + firstDateOfNextRange.minusDays(1);
                System.out.println("The missing date range is: " + missingDateRange);
                break;
            }
        }
    }
}

输出:

The missing date range is: 2019-04-05 2019-05-31

相关问题