Pass int in .before() to calculate if its older than x days

Stefan :

I want to know how can i check if given measurements are older than x days using the date.before() function. I've tried passing it an int as given in the exercise but It needs to be given a date so I don't know how to pass it. Code:

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(days))
        }

    }
Lucas S. :

You could compute the Date from now minus "x" days and use that with before() method.

Example:

Instant now = Instant.now();
Instant now_minus_x_days = now.minus(x, ChronoUnit.DAYS);
someDate.before(Date.from(now_minus_x_days));

In your class it should be something like:

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)))) {

            }
        }

    }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=81769&siteId=1