首页 > 解决方案 > Blazor Webassembly 在 UI 中显示错误的时间

问题描述

我正在开发我的应用程序.Net 5.0 Blazor WebAssembly。我在 HTML 中显示当前时间。但显示的时间始终-5.30 Hrs是我系统时钟中显示的时间。

经过一番谷歌搜索后,我在官方文档中找到了以下内容。

我在文件中添加了以下标签,.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();
    }
}

时间截图:

在此处输入图像描述

请协助我缺少什么。

标签: c#asp.net-coreblazorblazor-client-sideblazor-webassembly

解决方案


Microsoft.AspNetCore.Components.WebAssembly从版本更新和Microsoft.AspNetCore.Components.WebAssembly.DevServernuget 包后,问题得到5.0.0解决5.0.1


推荐阅读