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

时间:2015-06-17 04:03:18

标签: java integer evaluation

我一直致力于在xml文件(ServiceRequest)中存储一系列预定事件(自制f个对象)的程序,当我想要使用它们时我调用readData()方法(见下文),将ServiceRequest加载到serviceQueueArrayList<ServiceRequest>)并标记null个对象在文件末尾打开以标记ServiceRequest对象的结尾。

当我在数组中加载对象时,我一直在检查事件的日期(LocalDate对象)以删除超过270天的事件。现在我的问题是:在将整数270更改为180以尝试跟踪更少的数据之后,立即删除了大部分事件(即当前事件不应该像今天的所有事件一样#39;等等...)。它实际上是我唯一改变的东西,一旦我切换回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来跟踪事件日期/时间,以便.getDate()方法只返回start LocalDate格式:

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

1 个答案:

答案 0 :(得分:1)

datę检查没问题。如果日期不匹配,问题是将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; 
}