没有时间的日期比较
Date compare without time
我知道这是一个被问过很多次的问题,但我已经筛选过了,似乎找不到能完全帮助我的答案。我首先要说我不能使用 Joda。
我正在对一个程序进行更改,该程序要求我将用户输入日期(开始日期)与列中的日期进行比较。
无法使用 SQL 完成请求,因为返回结果后,此列的日期检查过滤器必须为 运行。
代码正在检查 table 上的一个条目,在 "From Date" 和字段条目之间进行比较,然后它会根据布尔值 [=] 是否显示该行数据33=]一个真或假。
除了一个部分外,所有代码都运行良好。它检查 table 上的日期是否大于或等于 "From Date".
示例:
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
被视为等于或小于 table 日期(如果它们都是 13/04/2015)?
日期 class 包括时间字段(以及各种其他字段)。您正在比较 'after' 或 'equals'。但是,'equals' 并没有按照您的想法行事。这不仅仅是比较日期。只有 return true
如果 所有 字段相等。修复它的最简单方法是,不要执行 'after or equals',而是执行 'not before'.
if (!singleOrderBean.getOrdStatD().before(checkArngdFromDate)) {
return true;
}
对于任何想知道的人,最终代码最终为:
private boolean checkArngdDateCriteria(OrderBean singleOrderBean) {
if (getSearchArngdFromDate().getValue()!= null || getSearchArngdToDate().getValue()!= null) {
Date checkArngdFromDate = (Date)getSearchArngdFromDate().getValue();
Date checkArngdToDate = (Date)getSearchArngdToDate().getValue();
if (getSearchArngdFromDate().getValue()!= null) {
Calendar cal = Calendar.getInstance();
cal.setTime(checkArngdFromDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
checkArngdFromDate = cal.getTime();
}
if (getSearchArngdFromDate().getValue()!= null && getSearchArngdToDate().getValue()== null && singleOrderBean.getOrdStatD()!= null) {
if (!singleOrderBean.getOrdStatD().before(checkArngdFromDate)) {
return true;
}
}
我不得不将日历部分放在 if statement
中,这样它就不会干扰稍后检查 if (getSearchArngdFromDate().getValue()== null && ...)
的 if statement
我知道这是一个被问过很多次的问题,但我已经筛选过了,似乎找不到能完全帮助我的答案。我首先要说我不能使用 Joda。
我正在对一个程序进行更改,该程序要求我将用户输入日期(开始日期)与列中的日期进行比较。
无法使用 SQL 完成请求,因为返回结果后,此列的日期检查过滤器必须为 运行。
代码正在检查 table 上的一个条目,在 "From Date" 和字段条目之间进行比较,然后它会根据布尔值 [=] 是否显示该行数据33=]一个真或假。
除了一个部分外,所有代码都运行良好。它检查 table 上的日期是否大于或等于 "From Date".
示例:
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
被视为等于或小于 table 日期(如果它们都是 13/04/2015)?
日期 class 包括时间字段(以及各种其他字段)。您正在比较 'after' 或 'equals'。但是,'equals' 并没有按照您的想法行事。这不仅仅是比较日期。只有 return true
如果 所有 字段相等。修复它的最简单方法是,不要执行 'after or equals',而是执行 'not before'.
if (!singleOrderBean.getOrdStatD().before(checkArngdFromDate)) {
return true;
}
对于任何想知道的人,最终代码最终为:
private boolean checkArngdDateCriteria(OrderBean singleOrderBean) {
if (getSearchArngdFromDate().getValue()!= null || getSearchArngdToDate().getValue()!= null) {
Date checkArngdFromDate = (Date)getSearchArngdFromDate().getValue();
Date checkArngdToDate = (Date)getSearchArngdToDate().getValue();
if (getSearchArngdFromDate().getValue()!= null) {
Calendar cal = Calendar.getInstance();
cal.setTime(checkArngdFromDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
checkArngdFromDate = cal.getTime();
}
if (getSearchArngdFromDate().getValue()!= null && getSearchArngdToDate().getValue()== null && singleOrderBean.getOrdStatD()!= null) {
if (!singleOrderBean.getOrdStatD().before(checkArngdFromDate)) {
return true;
}
}
我不得不将日历部分放在 if statement
中,这样它就不会干扰稍后检查 if (getSearchArngdFromDate().getValue()== null && ...)
if statement