using Microsoft.JSInterop; namespace Lieb.Data { public class TimeZoneService { private readonly IJSRuntime _jsRuntime; public TimeZoneService(IJSRuntime jsRuntime) { _jsRuntime = jsRuntime; } public async ValueTask GetLocalDateTime(DateTimeOffset dateTime) { if(dateTime == DateTimeOffset.MinValue) dateTime = DateTimeOffset.UtcNow; int offsetInMinutes = await _jsRuntime.InvokeAsync("GetTimezoneValue", dateTime); TimeSpan userOffset = TimeSpan.FromMinutes(-offsetInMinutes); return dateTime.ToOffset(userOffset); } public async ValueTask GetUTCDateTime(DateTimeOffset dateTime) { if(dateTime == DateTimeOffset.MinValue) return DateTimeOffset.UtcNow; int offsetInMinutes = await _jsRuntime.InvokeAsync("GetTimezoneValue", dateTime); TimeSpan userOffset = TimeSpan.FromMinutes(-offsetInMinutes); return new DateTimeOffset(dateTime.DateTime.AddMinutes(offsetInMinutes), new TimeSpan(0)); } public async ValueTask GetUserTimeZone() { return await _jsRuntime.InvokeAsync("GetTimezone"); } } }