如何在Java中比较两个日期,然后将结果与另一个日期进行比较?

问题描述 投票:1回答:1

菜鸟在这里!首先,我试图将dateOnedateTwo相互比较,然后将具有最新日期(> 0)的那个日期作为接受日期,并将其与cutOffDate进行比较。

如果在cutOffDate之后,请将其设置为FinalDate,否则将cutOffDate设置为FinalDate。我该如何实现?

我不确定我是否在正确的轨道上,dateOne.compareTo(dateTwo)出现以下错误:

String类型的方法compareTo(String)不适用于参数(日期)

public DateServiceImpl process(final DateServiceImpl item) throws Exception {

    final Date dateOne = item.getDateOne();
    final Date dateTwo = item.getDateTwo();

    final BigDecimal amountOne= item.getAmountOne();
    final BigDecimal amountTwo= item.getAmountTwo();

    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
    String cutOffDate = "01/01/2020";

    Date cDate = sdf.parse(cutOffDate);
    if ((amountOne.compareTo(BigDecimal.ZERO) > 0) && (amountTwo.compareTo(BigDecimal.ZERO) > 0)){
        if (dateOne.compareTo(dateTwo) <= 0) {
             item.setFinalDate(cDate);
        }
        return null;
    }
}
java spring-batch
1个回答
1
投票

您走在正确的轨道上。您只需要另一个比较就可以了。

if (dateOne.compareTo(dateTwo) > 0) {
    if (dateOne.compareTo(cDate) > 0) {
        item.setFinalDate(dateOne);
    } else {
        item.setFinalDate(cDate);
    }
} else {
    if (dateTwo.compareTo(cDate) > 0) {
        item.setFinalDate(dateTwo);
    } else {
        item.setFinalDate(cDate);
    }
}

您需要检查日期顺序的每种情况(检查dateOne是否在dateTwo之前,并检查dateOne是否在dateTwo之后)。然后,对于每个检查,您都必须检查最近的日期是在截止日期之前还是之后。

© www.soinside.com 2019 - 2024. All rights reserved.