From ed436c1dfa2db96021d715bbed97151c41658924 Mon Sep 17 00:00:00 2001 From: IrynaMatveieva Date: Thu, 13 Nov 2025 13:47:03 +0200 Subject: [PATCH] fixed aligned method for custom interval --- .../aggregation/single/interval/CustomInterval.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java index c760de1143..a88769f223 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java @@ -55,10 +55,10 @@ public class CustomInterval extends BaseAggInterval { @Override protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - long durationMillis = getDurationMillis(); - long nowMillis = reference.toInstant().toEpochMilli(); - long alignedStartMillis = (nowMillis / durationMillis) * durationMillis; - ZonedDateTime aligned = Instant.ofEpochMilli(alignedStartMillis).atZone(getZoneId()); + ZonedDateTime localMidnight = reference.toLocalDate().atStartOfDay(reference.getZone()); + long secondsFromMidnight = Duration.between(localMidnight, reference).getSeconds(); + long alignedSecondsFromMidnight = (secondsFromMidnight / durationSec) * durationSec; + ZonedDateTime aligned = localMidnight.plusSeconds(alignedSecondsFromMidnight); return next ? aligned.plusSeconds(durationSec) : aligned; }