我有一个变量previous
存储了一个日期时间。现在我想检查这个先前的日期时间是否比当前时间早二十分钟以上。
Date previous = myobj.getPreviousDate();
Date now = new Date();
//check if previous was before 20 minutes from now ie now-previous >=20
我们应该如何做?
我有一个变量previous
存储了一个日期时间。现在我想检查这个先前的日期时间是否比当前时间早二十分钟以上。
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) {
...
}
使用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);
}
}
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
}
long diff = now.getTimeInMillis() - previous.getTimeInMillis();
。 - Milton获取毫秒级时间,并检查差异:
long diff = now.getTime() - previous.getTime();
if (diff > 20L * 60 * 1000) {
// ...
}
另一个解决方案可能是使用Joda时间。
previuos
是否在当前时间前20分钟,而不是它们之间的差异。 - Eng.Fouad