我有一個日期時間在一個變量previous.Now我想檢查是否以前的日期時間是從目前的時間20分鐘之前。我該怎麼辦呢?檢查兩個日期之間的差異是否超過20分鐘
Date previous = myobj.getPreviousDate();
Date now = new Date();
//check if previous was before 20 minutes from now ie now-previous >=20
我們該怎麼做?
我有一個日期時間在一個變量previous.Now我想檢查是否以前的日期時間是從目前的時間20分鐘之前。我該怎麼辦呢?檢查兩個日期之間的差異是否超過20分鐘
Date previous = myobj.getPreviousDate();
Date now = new Date();
//check if previous was before 20 minutes from now ie now-previous >=20
我們該怎麼做?
使用
if (now.getTime() - previous.getTime() >= 20*60*1000) {
...
}
或者,更詳細的,但也許稍微容易閱讀:
import static java.util.concurrent.TimeUnit.*;
...
long MAX_DURATION = MILLISECONDS.convert(20, MINUTES);
long duration = now.getTime() - previous.getTime();
if (duration >= MAX_DURATION) {
...
}
獲取時間以毫秒爲單位,並檢查區別:
long diff = now.getTime() - previous.getTime();
if (diff > 20L * 60 * 1000) {
// ...
}
另一個解決方案可能是使用喬達時間。
OP要求檢查'previuos'是否在'now'後20分鐘之前,而不是它們之間的差異 –
@Eng:快速閱讀。更正:) –
是相反方式使用的比較符號。我想檢查以前的時間是否超過20分鐘,從過去的時間 – Akshay
你真的應該使用日曆對象,而不是日期:
Calendar previous = Calendar.getInstance();
previous.setTime(myobj.getPreviousDate());
Calendar now = Calendar.getInstance();
long diff = now.getTimeInMillis() - previous.getTimeInMillis();
if(diff >= 20 * 60 * 1000)
{
//at least 20 minutes difference
}
使用Joda Time:
boolean result = Minutes.minutesBetween(new DateTime(previous), new DateTime())
.isGreaterThan(Minutes.minutes(20));
的Java 8解決方案:
private static boolean isAtleastTwentyMinutesAgo(Date date) {
Instant instant = Instant.ofEpochMilli(date.getTime());
Instant twentyMinutesAgo = Instant.now().minus(Duration.ofMinutes(20));
try {
return instant.isBefore(twentyMinutesAgo);
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
在ThreeTen-Backport項目中也可以在Java 6和7中工作,在Android中使用ThreeTenABP項目。 –
什麼形式的時間做這些函數返回? Unix時間? –
是的,請看這裏:http://download.oracle.com/javase/6/docs/api/java/util/Date.html#getTime%28%29 – craesh