diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/extensions/PersistenceExtensions.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/extensions/PersistenceExtensions.java index 371702598f9..50ae3cd83b6 100644 --- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/extensions/PersistenceExtensions.java +++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/extensions/PersistenceExtensions.java @@ -466,6 +466,9 @@ private static void internalPersist(Item item, TimeSeries timeSeries, @Nullable int startPage = 0; filter.setPageNumber(startPage); + TimeZoneProvider tzProvider = timeZoneProvider; + ZoneId timeZone = tzProvider != null ? tzProvider.getTimeZone() : ZoneId.systemDefault(); + Iterable items = qService.query(filter); while (items != null) { Iterator itemIterator = items.iterator(); @@ -478,7 +481,7 @@ private static void internalPersist(Item item, TimeSeries timeSeries, @Nullable // Last persisted state value different from current state value, so it must have updated // since last persist. We do not know when from persistence, so get it from the item. return Optional.ofNullable(item.getLastStateUpdate()) - .map(instant -> instant.atZone(ZoneId.systemDefault())).orElse(null); + .map(instant -> instant.atZone(timeZone)).orElse(null); } return historicItem.getTimestamp(); } else { @@ -490,7 +493,7 @@ private static void internalPersist(Item item, TimeSeries timeSeries, @Nullable return historicItem.getTimestamp(); } else { return Optional.ofNullable(item.getLastStateChange()) - .map(instant -> instant.atZone(ZoneId.systemDefault())).orElse(null); + .map(instant -> instant.atZone(timeZone)).orElse(null); } } while (historicItem.getState().equals(state) && itemIterator.hasNext()) {