【发布时间】:2020-11-26 16:16:57
【问题描述】:
我正在.Net 5.0 Blazor WebAssembly 中开发我的应用程序。我在 HTML 中显示当前时间。但是显示的时间总是-5.30 Hrs我系统时钟显示的时间。
经过一番谷歌搜索后,我在official docs 中找到了以下内容。
我在.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();
}
}
时间截图:
请协助解决我所缺少的内容。
【问题讨论】:
-
如果没有
ToLocalTime(),你会得到什么?您的计算机设置为哪个时区? -
肯定有问题。它似乎没有将 UTC 转换回 IST(?)
-
.UtcNow.ToLocalTime()应该只是.Now但这段代码在我的电脑上运行良好。我是 UTC +11 atm。 -
@phuzi 我的电脑设置为
UTC +5.30时区。我得到相同的结果.Now或.Utc.Now有或没有ToLocalTIme()和 @Brian Parker.Now似乎也不起作用 -
不确定但似乎是一个实时错误github.com/mono/mono/issues/15260
标签: c# asp.net-core blazor blazor-client-side blazor-webassembly