[英]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.