簡體   English   中英

沒有時間的日期比較

[英]Date compare without time

我意識到這是一個被問過很多次的問題,但我已經篩選過了,似乎無法找到一個可以完全幫助我的答案。 我首先說我不能使用 Joda。

我正在對一個程序進行更改,該程序要求我將用戶輸入日期(起始日期)與列中的日期進行比較。

不能使用 SQL 完成請求,因為必須在返回結果后運行此列上的日期檢查過濾器。

該代碼正在檢查表上的條目,在“起始日期”和字段條目之間進行比較,然后它將根據布爾值是返回真還是假來顯示該行數據。

除了一部分之外,所有代碼都運行良好。 它檢查表上的日期是否大於或等於“起始日期”。

例子:

用戶輸入日期 13/04/2015。

程序應該返回日期字段為 13/04/2015 或之后的所有行。

該程序實際上返回此日期之后 1 天的所有日期。 即 14/04/2015 及以后的任何內容。

我在這部分檢查的代碼是:

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()

有沒有人知道一些代碼,如果它們都是 13/04/2015,那么From Date將被視為等於或小於表日期?

Date 類包括時間字段(和各種其他字段)。 您正在比較“之后”或“等於”。 然而,'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 statement ,以便它不會與后面的干擾if statement是檢查if (getSearchArngdFromDate().getValue()== null && ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM