你好,我需要使用ChronoNit获得日期之间的计数日期
这是我的代码:
Date madate = rfxobjet.getRv_rc_date();
Date date=java.util.Calendar.getInstance().getTime();
Date res=null;
int day = ChronoUnit.DAYS.between(madate,date);
但我得到了这个错误:类型chronoNit中的between(Temporal,Temporal)方法不适用于参数(Date,Date)
我需要做什么来解决这个错误
混合不同的API。 Date是一个古老的类,自JDK1以来一直在Java。 ChronoNit来自较新的日期,而API则首先出现在JDK8中。 通常情况下,您应该使用更新的API。 这意味着您应该使用LocalDate(或LocalDateTime)而不是Date,这是新API的一部分。
因此,为了更正代码,您需要使madate和date都是LocalDate的实例。 例如。 这应该会起作用:
LocalDate madate = LocalDate.now();
LocalDate date = LocalDate.now();
long day = ChronoUnit.DAYS.between(madate, date);
或者,如果仍然需要使用日期对象,可以将它们转换为时态对象:
Date madate = rfxobjet.getRv_rc_date();
Date date = java.util.Calendar.getInstance().getTime();
long day = ChronoUnit.DAYS.between(madate.toInstant(), date.toInstant());
Temporal是LocalDate和LocalDateTime的基类,因此使用date.toInstant()可以在新API中将日期转换为相应的实例。
nb.between()返回long,因此day变量也需要为long类型,否则需要使用to int转换:
int day = (int) ChronoUnit.DAYS.between(madate, date);