我正在使用Java 8并查询正在返回java.util.Date对象的Mongo数据库。我现在想检查该项目是否在过去30天内。我尝试使用新的时间API使代码更新到更新。
所以我写了这段代码:
java.time.LocalDateTime aMonthAgo = LocalDateTime.now().minusDays(30)
我有一个
java.util.Date dbDate = item.get("t")
我如何比较这两个?
我确信我可以完全使用Dates / Calendars完成这项工作,或者介绍joda-time。但我更喜欢使用更好的Java 8解决方案。
答案 0 :(得分:19)
新API中的Date相当于Instant:
Instant dbInstant = dbDate.toInstant();
然后您可以将该瞬间与另一个瞬间进行比较:
Instant aMonthAgo = ZonedDateTime.now().minusDays(30).toInstant();
boolean withinLast30Days = dbInstant.isAfter(aMonthAgo);
答案 1 :(得分:1)
您可以在LocalDateTime
Date
转换为Instant
Date currentDate=new Date();
LocalDateTime localDateTime = LocalDateTime.ofInstant(currentDate.toInstant(), ZoneId.systemDefault());
Date dateFromLocalDT = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
if(dateFromLocalDT.compareTo(yourDate)==0){
System.out.println("SAME");
}
答案 2 :(得分:1)
只需将java.util.Date转换为LocalDateTime。
aMonthAgo.compareTo( LocalDateTime.ofInstant(dbDate.toInstant(), ZoneId.systemDefault()));