diff --git a/src/LiveRecorder.Application/Services/DashboardService.cs b/src/LiveRecorder.Application/Services/DashboardService.cs index 681d9ba..789d97a 100644 --- a/src/LiveRecorder.Application/Services/DashboardService.cs +++ b/src/LiveRecorder.Application/Services/DashboardService.cs @@ -40,8 +40,10 @@ public sealed class DashboardService var now = DateTimeOffset.UtcNow; var beijingNow = ChinaTime.ToBeijingTime(now); var todayBeijingDate = DateOnly.FromDateTime(beijingNow.DateTime); - var todayUtcStart = new DateTimeOffset(todayBeijingDate.ToDateTime(TimeOnly.MinValue), ChinaTime.Zone.GetUtcOffset(beijingNow.DateTime)); - var todayUtcEnd = new DateTimeOffset(todayBeijingDate.ToDateTime(TimeOnly.MaxValue), ChinaTime.Zone.GetUtcOffset(beijingNow.DateTime)); + // Bound "today in Beijing" but normalize to UTC — Npgsql only accepts offset 0 + // when writing to a `timestamp with time zone` column. + var todayUtcStart = new DateTimeOffset(todayBeijingDate.ToDateTime(TimeOnly.MinValue), ChinaTime.Zone.GetUtcOffset(beijingNow.DateTime)).ToUniversalTime(); + var todayUtcEnd = new DateTimeOffset(todayBeijingDate.ToDateTime(TimeOnly.MaxValue), ChinaTime.Zone.GetUtcOffset(beijingNow.DateTime)).ToUniversalTime(); var recentErrorSince = now.AddHours(-24); // Run queries sequentially — DbContext is not thread-safe