提问者:小点点

获取到日期之间得计数天数Java


你好,我需要使用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)

我需要做什么来解决这个错误


共1个答案

匿名用户

混合不同的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);