我意识到这是一个被问过很多次的问题,但我已经仔细筛选过,似乎找不到完全可以帮助我的答案。我首先要说的是我不能使用 Joda。
我正在对一个程序进行更改,该程序要求我将用户输入日期(起始日期)与列中的日期进行比较。
无法使用 SQL 来完成该请求,因为必须在返回结果后运行此列上的日期检查过滤器。
该代码正在检查表中的条目,对“起始日期”和字段条目进行比较,然后根据 boolean 值返回 true 还是 false 来显示该行数据。
除了一个部分之外,所有代码都工作正常。它检查表中的日期是否大于或等于“起始日期”。
示例:
The user enters the date 13/04/2015.
The program SHOULD return all rows with the date field that is 13/04/2015 or later.
The program actually returns all dates that are 1 day after this date. i.e. anything that is 14/04/2015 and onwards.
我检查此部分的代码是:
private boolean checkArngdDateCriteria(OrderBean singleOrderBean) {
if (getSearchArngdFromDate().getValue()!= null || getSearchArngdToDate().getValue()!= null) {
Date checkArngdToDate = (Date)getSearchArngdToDate().getValue();
Date checkArngdFromDate = (Date)getSearchArngdFromDate().getValue();
if (getSearchArngdFromDate().getValue()!= null && getSearchArngdToDate().getValue()== null && singleOrderBean.getOrdStatD()!= null) {
if (singleOrderBean.getOrdStatD().after(checkArngdFromDate) || singleOrderBean.getOrdStatD().equals(checkArngdFromDate)) {
return true;
}
}
EDIT:
//This retrieves the date from the results table singleOrderBean.getOrdStatD() //This retrieves the value from the user input field (retrieved as Object) getSearchArngdFromDate().getValue()
是否有人知道一些代码,可以使 From Date
被视为等于或小于表日期(如果它们都是 13/04/2015)?
最佳答案
Date 类包含时间字段(以及各种其他字段)。您正在比较“之后”或“等于”。然而,“等于”并不是做你认为它正在做的事情。这不仅仅是比较日期。仅当所有字段都相等时,它才会返回true
。解决这个问题的最简单方法是,不要执行“after or equals”,而执行“not before”。
if (!singleOrderBean.getOrdStatD().before(checkArngdFromDate)) {
return true;
}
关于java - 没有时间的日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366029/