我意识到这是一个多次提出的问题,但我已经筛选出来,似乎无法找到能够完全帮助我的答案。我首先要说我不能使用Joda。
我正在对一个程序进行更改,该程序要求我将用户输入日期(From Date)与列中的日期进行比较。
使用SQL无法完成请求,因为必须在返回结果后运行此列上的日期检查过滤器。
代码正在检查表上的条目,在“From Date”和字段条目之间进行比较,然后它将显示该行数据,具体取决于布尔值是返回true还是false。
除了一个部分之外,所有代码都正常工作。它检查表格上的日期是否大于或等于“起始日期”。
示例:
用户输入日期为13/04/2015。
程序应该返回所有带有日期字段的行 2015年4月13日或之后。
该程序实际返回此日期后1天的所有日期。 即任何2015年4月14日及以后的事情。
我在此部分检查的代码是:
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;
}
}
编辑:
//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?)
答案 0 :(得分:1)
Date类包括时间字段(以及其他各种字段)。您正在比较'之后'或者等于'。但是,'等于'没有按照你的想法去做。它不仅仅是比较日期。如果所有字段相等,它只会返回true
。解决这个问题的最简单方法是,不要在“等待”之后做“等”,而不是“等待”。
if (!singleOrderBean.getOrdStatD().before(checkArngdFromDate)) {
return true;
}
答案 1 :(得分:1)
对于任何想知道的人,最终的代码最终都是:
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 statement
的{{1}}