2 回答
TA贡献1827条经验 获得超7个赞
时间
由于您将问题标记为 java,我假设您想在 JSP 中用 Java 执行此操作。
ZoneId bashZone = ZoneId.of("Europe/Copenhagen");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
String timestampString = "2018-11-08 00:07:22";
ZonedDateTime timestamp = LocalDateTime.parse(timestampString, formatter)
.atZone(bashZone);
if (timestamp.isBefore(ZonedDateTime.now(bashZone).minusHours(24))) {
System.out.println(timestampString + " is more than 24 hours ago");
} else {
System.out.println(timestampString + " is *not* more than 24 hours ago");
}
刚才运行代码的时候,输出是:
2018-11-08 00:07:22不超过 24 小时前
如果碰巧不是欧洲/哥本哈根,请替换您的 bash 使用的时区。ZoneId.systemDefault()如果您相信 JVM 时区设置一致,则可以使用。它并不总是如此,而且甚至可以在同一 JVM 中运行的另一个程序中随时更改,因此很脆弱。
java.time是现代Java的日期和时间的API,它从2014年起已取代旧的日期,时间类Date,SimpleDateFormat等等。旧类的设计很差,所以我建议你使用现代类。
TA贡献1812条经验 获得超5个赞
将该字符串时间戳解析为LocalDateTime. 您可以使用 LocalDateTime 方法来检查您的日期是否早于 24 小时。
String str = "2018-01-20 11:32:53";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date = LocalDateTime.parse(str, dtf);
return date.plus(1, ChronoUnit.DAYS).isBefore(LocalDateTime.now());
添加回答
举报