Blazor 始终以 UTC 格式显示日期

Blazor always shows dates in UTC format

我目前正在处理一些 Blazor 演示和示例,发现在任何受支持的浏览器中,它始终以 UTC 格式显示日期时间和时区。我的实际时区与 UTC 不同。

Blazor 或 WebAssembly 有什么限制吗?我使用的是 Blazor 版本 0.7.0 并且有一个代码片段

@functions
{
    protected override void OnInit()
    {
        Console.WriteLine($"OS: {RuntimeInformation.OSDescription} {RuntimeInformation.OSArchitecture}");
        Console.WriteLine($"Processor: {RuntimeInformation.ProcessArchitecture}");

        Console.WriteLine($"Timezone is {TimeZoneInfo.Local}");
        Console.WriteLine($"Date time is {DateTime.Now}");
    }
}

编辑: 根据 WebAssembly: Missing Timezone implementation GitHub 问题,它仍然是一个悬而未决的问题

当 Blazor 在客户端 运行 时,这是一个与 Mono 运行时相关的已知问题。 WebAssembly: Missing Timezone implementation

正在跟踪

您可以使用此库作为解决方法 Toolbelt.Blazor.TimeZoneKit

mono 当前不支持本地化。我写了一篇 post (https://chrissainty.com/simple-localisation-in-blazor/) 来展示如何在 Blazor 应用程序中实现本地化。

我还发布了一个 nuget 包 Blazored.Localisation 如果你只是想继续学习而不是自己写东西。

如果您想在浏览器中显示当地时间的日期和时间,请查看 Blazor Time 库。

它引入了一个 <ToLocal> 标签,您可以在其中输入 UTC 或服务器时间,它会将其转换为本地时间。

<ToLocal DateTime="testUtcTime" Format="ddd mmm dd yyyy HH:MM:ss"></ToLocal>