使用if语句比较日期时出现问题



我有一个问题比较。

第二个"总是被满足,即使"if"的第二个条件是假的。

首先,我必须使用Timestamp。这样我就可以把LocalDateTime转换成Date ("a"是一种数据类型(日期)。我想做的是比较当前时间是否大于预定时间(a.t getfinfecha()),如果是,返回1。如果当前时间大于或等于少于7天的预定时间(a.t getfinfecha())并且小于预定日期,我想返回2。否则(这意味着如果当前时间低于a.t getfinfecha()并且低于a.t getfinfecha()少于7天)返回3。我传递的对象小于预定日期小于7天,它返回2。不返回3.

if (java.sql.Timestamp.valueOf(LocalDateTime.now()).compareTo(a.getFinFecha()) > 0) {
return 1;
} else if (java.sql.Timestamp.valueOf(LocalDateTime.now()).getDate() >= (a.getFinFecha().getDate() - 7) && java.sql.Timestamp.valueOf(LocalDateTime.now()).compareTo(a.getFinFecha()) <= 0) {
return 2;
} else {
return 3;
}

我不得不使用时间戳。valueOf这样我就可以将LocalDateTime转换为Date

不,你没有,你也不应该。避免使用过时的方法,如getDate(),并使用java.timeAPI。最简单的解决方案是将a.getFinFecha()返回的Date转换为LocalDateTime,并根据您的需求进行比较:
private int yourMethod() {
Instant instant        = Instant.ofEpochMilli(a.getFinFecha().getTime());
LocalDateTime finFecha = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); // or use appropriate offset for your use case

if (LocalDateTime.now().isAfter(finFecha)) {
return 1;
} else if (LocalDateTime.now().isAfter(finFecha.minusDays(7))) {
return 2;
} else {
return 3;
}
}

最新更新