如何检查日期和时间戳是在 20 分钟之前

How to check the date and timestamp is before 20mins

我正在使用 Java8。在我的一项网络服务中,我得到这样的日期格式:2017-10-17T04:11:51+00:00.

我想测试时间戳是否是20分钟前。为此,我编写了以下代码,但它不起作用:

Long minutesAgo = new Long(20);
String lastDate = "2017-10-17T04:11:51+00:00";
OffsetDateTime odt = OffsetDateTime.parse(lastDate);
Instant instant = odt.toInstant();  // Instant is always in UTC.
java.util.Date date = java.util.Date.from( instant );
Date dateIn_X_MinAgo = new Date (date.getTime() - minutesAgo*60*1000);
System.out.println(dateIn_X_MinAgo.getTime()); //It prints 1508212311000

有人可以看看我的代码吗?

您正在使用新的 java.time API(OffsetDateTimeInstant),因此无需将其与旧的 java.util.Date 混合使用class.

您可以使用 java.time.temporal.ChronoUnit 获取 2 个瞬间之间的分钟差值,并使用 Instant.now() 获取当前瞬间:

String lastDate = "2017-10-17T04:11:51+00:00";
OffsetDateTime odt = OffsetDateTime.parse(lastDate);
// get difference from now (in minutes)
long diff = ChronoUnit.MINUTES.between(odt.toInstant(), Instant.now());
if (diff > 20) {
    // odt is more than 20 minutes ago
}