簡體   English   中英

如何比較java日期中的那一天?

[英]How to compare just the day in a java date?

我想在昨天和今天之間做一個簡單的日期比較

if (yesterday.before(today)) {
 ...
}

問題是,使用before方法,即使只有幾秒鍾的差異,我也會評估為真。 我怎么可以只比較一天(因為我只想將它評估為真如果它是前一天(應該忽略分鍾/秒)

先感謝您

使用DateUtils -

if (!DateUtils.isSameDay(yesterday, today) && (yesterday.before(today)) {
   //...
}

編輯:它也可以在沒有DateUtils的情況下完成。 看到這個帖子。

如果您不想使用第三方庫,請實現如下方法:

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

其中startDateendDate是日期的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.

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