diff --git a/frigate/output/preview.py b/frigate/output/preview.py index 041d952d9..389a3c207 100644 --- a/frigate/output/preview.py +++ b/frigate/output/preview.py @@ -249,10 +249,9 @@ class PreviewRecorder: "v2": v2, } - # end segment at end of hour + # end segment at end of hour (use UTC to avoid DST issues) self.segment_end = ( - (datetime.datetime.now() + datetime.timedelta(hours=1)) - .astimezone(datetime.timezone.utc) + (datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=1)) .replace(minute=0, second=0, microsecond=0) .timestamp() ) @@ -264,8 +263,7 @@ class PreviewRecorder: # check for existing items in cache start_ts = ( - datetime.datetime.now() - .astimezone(datetime.timezone.utc) + datetime.datetime.now(datetime.timezone.utc) .replace(minute=0, second=0, microsecond=0) .timestamp() ) @@ -299,8 +297,10 @@ class PreviewRecorder: def reset_frame_cache(self, frame_time: float) -> None: self.segment_end = ( - (datetime.datetime.now() + datetime.timedelta(hours=1)) - .astimezone(datetime.timezone.utc) + ( + datetime.datetime.fromtimestamp(frame_time, tz=datetime.timezone.utc) + + datetime.timedelta(hours=1) + ) .replace(minute=0, second=0, microsecond=0) .timestamp() )