Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有时间的日期比较_Java_Date Comparison - Fatal编程技术网

Java 没有时间的日期比较

Java 没有时间的日期比较,java,date-comparison,Java,Date Comparison,我意识到这是一个被问了很多次的问题,但我已经筛选了一遍,似乎找不到一个能完全帮助我的答案。我先说我不能用乔达 我正在对一个程序进行更改,该程序要求我将用户输入日期(起始日期)与列中的日期进行比较 使用SQL作为筛选器无法完成请求,因此必须在返回结果后运行此列上的日期检查 代码检查表中的一个条目,比较“From Date”和字段条目,然后根据布尔值返回的是真还是假显示该行数据 除了一个部分外,所有代码都运行良好。它检查表上的日期是否大于或等于“起始日期” 例如: 用户输入日期为2015年4月13日

我意识到这是一个被问了很多次的问题,但我已经筛选了一遍,似乎找不到一个能完全帮助我的答案。我先说我不能用乔达

我正在对一个程序进行更改,该程序要求我将用户输入日期(起始日期)与列中的日期进行比较

使用SQL作为筛选器无法完成请求,因此必须在返回结果后运行此列上的日期检查

代码检查表中的一个条目,比较“From Date”和字段条目,然后根据布尔值返回的是真还是假显示该行数据

除了一个部分外,所有代码都运行良好。它检查表上的日期是否大于或等于“起始日期”

例如:

用户输入日期为2015年4月13日

程序应返回所有带有日期字段的行 2015年4月13日或之后

程序实际上返回该日期后1天的所有日期。 i、 e.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()

是否有人知道一些代码,如果它们都是2015年4月13日,那么
起始日期将被视为等于或小于表日期?

日期类包括时间字段(以及各种其他字段)。您正在比较“after”或“equals”。然而,“equals”并不是在做你认为它在做的事情。这不仅仅是比较日期。仅当所有字段相等时,才会返回
true
。解决这个问题最简单的方法是,不要在“之后”或“等于”,而是在“之前”

        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语句中
,这样它就不会干扰后面的
if语句
,该语句检查
if(getSearchArngFromDate().getValue()==null&&&…

无法完全理解您在这里提出的问题。但是,有时用
替换
after()
就足够了!before()
我已经试过了。我正在尝试使用它,以便在我检查列上的日期范围时,从日期包含在列表中。当前,如果起始日期是特定日期(例如:2015年9月16日),则仅包括该日期之后的日期。我需要在结果中包含具体的日期。所以你能改进你的问题并附上一个测试用例吗?删除除需要修复的最小可运行代码之外的所有内容。该代码是我需要修复的部分。我已经排除了任何不适用于此问题的代码。在UI输入框中输入日期并单击应用时,结果不包括日期与用户输入的日期(起始日期)匹配的行。因为检查必须在从多个表检索结果之后进行,所以我不能使用SQL筛选它。在执行此代码时,您能检查一下日期对象值“date CheckArngFromDate”是什么吗!!那对我不起作用。我必须将它与一些代码结合起来,将时间部分添加到从用户输入检索到的值中,然后将时间部分设置为零。从同事那里得到了一个提示/窍门。另一种方法是将日期解析为'yyyyMMdd'格式,并转换为整数。然后可以使用int轻松地比较日期。必须采用YYMMDD格式,以确保日期值可以正确比较。