我们如何在Java中实现日期分割/磨合日期



这里Java需要读取一个包含Contract、Member、Start Date和End Date的文件。如果存在日期拆分/磨合日期,则需要将其填充到合同级别的目标文件中。下面提供了源文件和目标文件示例以及预期结果。

在该示例中,合同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

下一个范围从当前范围的最后日期后一天开始。您可以迭代日期范围字符串的列表,并找到不遵守此规则的连续范围。此时,使用此规则创建缺失的范围并中断循环。

演示:

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

相关内容

  • 没有找到相关文章

最新更新