From 15eb4345d19f4221cf9364dcd56a615e97101bd8 Mon Sep 17 00:00:00 2001 From: Bilal Atique <74999164+BilalAtique@users.noreply.github.com> Date: Wed, 30 Sep 2026 15:22:36 +0500 Subject: [PATCH] Fix Tile timestamps shifted by the local UTC offset (#183639) --- homeassistant/components/tile/device_tracker.py | 9 +++++---- tests/components/tile/snapshots/test_device_tracker.ambr | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/tile/device_tracker.py b/homeassistant/components/tile/device_tracker.py index 5dbed318a29b..5e1537bf0961 100644 --- a/homeassistant/components/tile/device_tracker.py +++ b/homeassistant/components/tile/device_tracker.py @@ -6,7 +6,7 @@ from typing import override from homeassistant.components.device_tracker import TrackerEntity from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from homeassistant.util.dt import as_utc +from homeassistant.util import dt as dt_util from .coordinator import TileConfigEntry, TileCoordinator from .entity import TileEntity @@ -81,9 +81,10 @@ class TileDeviceTracker(TileEntity, TrackerEntity): # If the API doesn't return a value for a particular timestamp # attribute, skip it: continue - self._attr_extra_state_attributes[timestamp_attr[0]] = as_utc( - timestamp_attr[1] - ) + # pytile returns naive datetimes that hold UTC, not local time: + self._attr_extra_state_attributes[timestamp_attr[0]] = timestamp_attr[ + 1 + ].replace(tzinfo=dt_util.UTC) @override async def async_added_to_hass(self) -> None: diff --git a/tests/components/tile/snapshots/test_device_tracker.ambr b/tests/components/tile/snapshots/test_device_tracker.ambr index 0289c9fac02b..a27fbc4fe300 100644 --- a/tests/components/tile/snapshots/test_device_tracker.ambr +++ b/tests/components/tile/snapshots/test_device_tracker.ambr @@ -47,8 +47,8 @@ : list([ ]), 'is_lost': False, - 'last_lost_timestamp': datetime.datetime(1970, 1, 1, 3, 0, tzinfo=datetime.timezone.utc), - 'last_timestamp': datetime.datetime(2020, 8, 13, 0, 55, 26, tzinfo=datetime.timezone.utc), + 'last_lost_timestamp': datetime.datetime(1969, 12, 31, 19, 0, tzinfo=datetime.timezone.utc), + 'last_timestamp': datetime.datetime(2020, 8, 12, 17, 55, 26, tzinfo=datetime.timezone.utc), : 1, : 1, 'ring_state': 'STOPPED',