#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