没有时间的日期比较

时间:2015-10-27 10:52:57

标签: java date-comparison

我意识到这是一个多次提出的问题,但我已经筛选出来,似乎无法找到能够完全帮助我的答案。我首先要说我不能使用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?)

2 个答案:

答案 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}}