[英]How to compare just the day in a java date?
我想在昨天和今天之間做一個簡單的日期比較
if (yesterday.before(today)) {
...
}
問題是,使用before方法,即使只有幾秒鍾的差異,我也會評估為真。 我怎么可以只比較一天(因為我只想將它評估為真如果它是前一天(應該忽略分鍾/秒)
先感謝您
如果您不想使用第三方庫,請實現如下方法:
public boolean before(Calendar yesterday, Calendar today) {
if(yesterday == today) return false;
if(yesterday == null || today == null) return false;
return yesterday.get(Calendar.YEAR) < today.get(Calendar.YEAR) ? true :
yesterday.get(Calendar.YEAR) == today.get(Calendar.YEAR) && yesterday.get(Calendar.DAY_OF_YEAR) < today.get(Calendar.DAY_OF_YEAR);
}
如果您要添加一個比標准Java庫更好地處理日期的庫,您可能需要查看Joda 。
使用Joda,您可以通過以下方式計算天數之間的差異:
Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
其中startDate
和endDate
是日期的Joda版本, DateTime
(實際上是它的超類)。
將Java Date
對象轉換為Joda DateTime
對象可以通過構造函數調用完成:
DateTime dateTime = new DateTime(javaDate);
添加這個庫對於這個特定的問題可能有點過分,但是如果你經常處理日期和時間操作,那么這個庫肯定是值得的。
如果您想堅持使用Date
您可以暫時將當前日期降低一天。 如果before()
仍然導致相同的結果,則您的時間跨度至少為一天。
final static long DAY_MILLIS = 86400000;
Date d1 = new Date(2011, 06, 18);
Date d2 = new Date(2011, 06, 16);
Date temp = new Date(d1.getTime() - DAY_MILLIS);
if (temp.before(d2))
// Do stuff
}
請注意我使用了一個棄用的構造函數但它應該完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.