Java 在.before()中传递int以计算其是否早于x天

Java 在.before()中传递int以计算其是否早于x天,java,java.util.date,Java,Java.util.date,我想知道如何使用date.before()函数检查给定的测量值是否早于x天。我已经试着按照练习中给出的那样给它传递一个int,但是需要给它一个日期,所以我不知道如何传递它。 代码: class气象站{ 列出测量值; 国际日; 公共气象站(国际天){ 这个.天=天; this.measures=新的ArrayList(); } 公共空隙测量(浮子温度、浮子风、浮子湿度、浮子能见度、日期){ 测量值。添加(新测量值(温度、风、湿度、能见度、日期)); 测量(m:测量){ 如果(m.日期之前(天))

我想知道如何使用
date.before()
函数检查给定的测量值是否早于x天。我已经试着按照练习中给出的那样给它传递一个int,但是需要给它一个日期,所以我不知道如何传递它。 代码:

class气象站{
列出测量值;
国际日;
公共气象站(国际天){
这个.天=天;
this.measures=新的ArrayList();
}
公共空隙测量(浮子温度、浮子风、浮子湿度、浮子能见度、日期){
测量值。添加(新测量值(温度、风、湿度、能见度、日期));
测量(m:测量){
如果(m.日期之前(天))
}
}

您可以计算从现在开始的日期减去“x”天,并将其与
before()
方法一起使用

例如:

Instant now = Instant.now();
Instant now_minus_x_days = now.minus(x, ChronoUnit.DAYS);
someDate.before(Date.from(now_minus_x_days));
在你的课堂上应该是这样的:

class WeatherStation {
    List<Measurements> measurements;
    int days;

    public WeatherStation(int days) {
        this.days = days;
        this.measurements = new ArrayList<>();
    }

    public void addMeasurements(float temperature, float wind, float humidity, float visibility, Date date) {
        measurements.add(new Measurements(temperature, wind, humidity, visibility, date));
        for(Measurements m: measurements) {
            if(m.date.before(Date.from(Instant.now().minus(days, ChronoUnit.DAYS)))) {

            }
        }

    }
}
class气象站{
列出测量值;
国际日;
公共气象站(国际天){
这个.天=天;
this.measures=新的ArrayList();
}
公共空隙测量(浮子温度、浮子风、浮子湿度、浮子能见度、日期){
测量值。添加(新测量值(温度、风、湿度、能见度、日期));
测量(m:测量){
if(m.date.before(date.from(Instant.now().减去(days,ChronoUnit.days))){
}
}
}
}

我为javadoc作者感到抱歉,似乎从来没有人读过它,因为你可以看到这个方法需要另一个
日期
而不是
整数
顺便说一句,看看这个包中的类@ScaryWombat是的,我非常清楚它需要一个日期作为参数。但是考虑到这个练习,我需要给它一个整数天的时间。所以我想知道我该怎么做这样做,因为我不知道。使用Java8 LocalDate,或者如果更早使用日历,请考虑使用Java8的LocalDate/LocalDateTime,而不是Date。这会更简单!似乎是个好答案。但是答案将时间视为24小时的乘法,这可能不准确。因此,昨天上午10:00与今天上午9:00被视为同一天(相差23小时)。不确定这是否正确…事实并非如此,从
开始的小时、分钟和秒数在删除8天的时间时得到尊重。这就是使用
即时
计时的要点,而不仅仅是用简单的整数进行计算。我想你需要假设输入日期有小时/分钟。I在代码中看不到这种假设。Instant.now()。减号(1,ChronoUnit.DAYS)比现在早24小时。@WitoldKaczurba AFAIK Instant没有时间规则(如日光节约),这就是使用它的意义——除非我误解了您试图表达的观点
class WeatherStation {
    List<Measurements> measurements;
    int days;

    public WeatherStation(int days) {
        this.days = days;
        this.measurements = new ArrayList<>();
    }

    public void addMeasurements(float temperature, float wind, float humidity, float visibility, Date date) {
        measurements.add(new Measurements(temperature, wind, humidity, visibility, date));
        for(Measurements m: measurements) {
            if(m.date.before(Date.from(Instant.now().minus(days, ChronoUnit.DAYS)))) {

            }
        }

    }
}