time-series-smoothing/src/main/java/ru/ulstu/TimeSeriesUtils.java

44 lines
1.7 KiB
Java
Raw Normal View History

2021-06-01 14:05:19 +04:00
/*
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
*
*/
2020-10-10 13:36:35 +04:00
package ru.ulstu;
2021-06-01 14:05:19 +04:00
import ru.ulstu.datamodel.ts.TimeSeries;
2020-10-10 13:36:35 +04:00
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class TimeSeriesUtils {
/**
* Вычисляет среднее значение между датами временного ряда
*
* @param timeSeries объект, содержащий временной ряд
* @return средняя разница между датами исходного временного ряда в миллисекундах
*/
public static long getTimeDifferenceInMilliseconds(TimeSeries timeSeries) {
long diffMilliseconds = 0;
for (int i = 1; i < timeSeries.getLength(); i++) {
diffMilliseconds += timeSeries.getValues().get(i - 1).getDate()
.until(timeSeries.getValues().get(i).getDate(), ChronoUnit.MILLIS);
}
return diffMilliseconds / (timeSeries.getLength() - 1);
}
public static TimeSeries fillDates(TimeSeries timeSeries, long milliseconds) {
2020-11-02 13:45:03 +04:00
if (!timeSeries.isEmpty()) {
timeSeries.getLastValue().setDate(LocalDateTime.now());
for (int i = timeSeries.getLength() - 2; i >= 0; i--) {
timeSeries.getValues().get(i).setDate(timeSeries.getValues().get(i + 1).getDate().minus(milliseconds, ChronoUnit.MILLIS));
}
2020-10-10 13:36:35 +04:00
}
return timeSeries;
}
public static TimeSeries fillDates(TimeSeries timeSeries) {
return fillDates(timeSeries, 1000 * 60 * 60 * 24);
}
}