Blazor Webassembly показывает неправильное время в пользовательском интерфейсе

#c# #asp.net-core #blazor #blazor-client-side #blazor-webassembly

#c# #asp.net-core #blazor #blazor-на стороне клиента #blazor-webassembly

Вопрос:

Я разрабатываю свое приложение .Net 5.0 Blazor WebAssembly в. Я отображаю текущее время в HTML. Но отображаемое время всегда -5.30 Hrs совпадает со временем, отображаемым в моих системных часах.

После некоторого поиска в Google я нашел следующее в официальных документах.

Я добавил следующие теги в .csproj файл, но все равно не повезло.

Вот мой код:

.csproj:

 <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
    <InvariantGlobalization>true</InvariantGlobalization>
    <ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.0" PrivateAssets="all" />
    <PackageReference Include="Microsoft.Extensions.Localization" Version="5.0.0" />
    <PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
</ItemGroup>
 

Код:

 @using System.Threading
@implements IDisposable

<p>@CurrentDateTime</p>

@code {
    private Timer _timer;
    public string CurrentDateTime { get; set; }

    protected override void OnAfterRender(bool firstRender)
    {
        if (firstRender)
        {
            _timer = new Timer(DateTimeCallback, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
        }
    }

    private async void DateTimeCallback(object state)
    {
        CurrentDateTime = DateTimeOffset.UtcNow.ToLocalTime().ToString("dd MMM yyyy hh:mm:ss tt");
        await InvokeAsync(StateHasChanged);
    }

    public void Dispose()
    {
        _timer?.Dispose();
    }
}
 

Скриншот времени:

введите описание изображения здесь

Пожалуйста, помогите, чего мне не хватает.

Комментарии:

1. Что вы получаете без ToLocalTime() ? И на какой часовой пояс настроен ваш компьютер?

2. Что-то определенно не так. похоже, он не преобразует UTC обратно в IST (?)

3. .UtcNow.ToLocalTime() должно быть .Now , но этот код отлично работает на моем компьютере. Я UTC 11 atm.

4. @phuzi мой компьютер настроен на UTC 5.30 часовой пояс. Я получаю тот же результат для .Now или .Utc.Now с или без ToLocalTIme() , и @Brian Parker .Now , похоже, тоже не работает

5. Не уверен, но, похоже, это живая ошибка github.com/mono/mono/issues/15260

Ответ №1:

Проблема была решена после обновления Microsoft.AspNetCore.Components.WebAssembly пакетов и Microsoft.AspNetCore.Components.WebAssembly.DevServer nuget с версии 5.0.0 на 5.0.1