2020-10-10 13:36:35 +04:00
|
|
|
package ru.ulstu;
|
|
|
|
|
|
|
|
import ru.ulstu.models.TimeSeries;
|
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|