评估 localDate.now().minusDays(整数)

evaluating localDate.now().minusDays(integer)

我一直在开发一个程序,该程序在 xml 文件 (f) 中存储一系列预定事件(自制 ServiceRequest 对象),并且当我需要时为了与他们一起工作,我调用了一个 readData() 方法(见下文),它将 ServiceRequest 加载到 serviceQueue(一个 ArrayList<ServiceRequest>)中,我标记了一个 null文件末尾的对象以标记 ServiceRequest 对象的结尾。

当我在数组中加载对象时,我一直在检查事件的日期(LocalDate 对象)以删除超过 270 天的事件。现在这是我的问题:在将整数 270 更改为 180 以尝试跟踪更少的数据后,大多数事件立即被删除(即不应该发生的当前事件,就像今天的所有事件等等......)。这实际上是我唯一改变的东西,当我切换回 270 并从备份中恢复事件时,一切都恢复正常。 210 似乎也导致我的评估失败。

不确定我遗漏了什么,也许是关于如何评估 LocalDate.now().minusDays(XXX) 的?如果需要,我可以包含更多我的代码,但这是我唯一更改的地方,而且该方法非常基础:

public static void readData() {
    serviceQueue.clear();
    try {
        Boolean complete = false;
        FileReader reader = new FileReader(f);
        ObjectInputStream in = xstream.createObjectInputStream(reader);
        while(complete != true) {   
            ServiceRequest test = (ServiceRequest)in.readObject();      
            if(test != null && test.getDate().isAfter(LocalDate.now().minusDays(210))) { 
                serviceQueue.add(test); }
                else { complete = true; }
        }
        in.close(); } 
    catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } 
}

我使用 LocalDateTime 变量 startstop 来跟踪事件 date/time 所以 .getDate() 方法简单 returns start LocalDate 格式:

    public LocalDate getDate() { return start.toLocalDate(); }

数据检查正常。问题是将 complete 设置为 true 以防日期不匹配。

if(test != null &&test.getDate().isAfter(LocalDate.now().minusDays(210))) { 
            serviceQueue.add(test); }
            else { complete = true; }

试试下面的代码:

if(test != null) { 
     if (test.getDate().isAfter(LocalDate.now().minusDays(210)) {
        serviceQueue.add(test);
     }
}
else { 
  complete = true; 
}