C# 如何从客户端获取当前日期时间?

C# 如何从客户端获取当前日期时间?,c#,blazor,blazor-server-side,C#,Blazor,Blazor Server Side,我想用blazor组件显示当前客户端日期时间 下一个代码何时出现 <div>@DateTime.Now</div> 我想是服务器时间了。如何获取客户端操作系统时间?要获取客户端操作系统时间,必须使用时区或toLocaleDateString。您可以使用以下任一代码 <div>@DateTime.Now.toLocaleDateString()</div> 或 它可能会解决您的问题。要获取客户端操作系统时间,您必须使用时区,也可以使用toLoca

我想用blazor组件显示当前客户端日期时间

下一个代码何时出现

<div>@DateTime.Now</div>

我想是服务器时间了。如何获取客户端操作系统时间?

要获取客户端操作系统时间,必须使用时区或toLocaleDateString。您可以使用以下任一代码

<div>@DateTime.Now.toLocaleDateString()</div>


它可能会解决您的问题。

要获取客户端操作系统时间,您必须使用时区,也可以使用toLocaleDateString。您可以使用以下任一代码

<div>@DateTime.Now.toLocaleDateString()</div>


它可能会解决您的问题。

您可以使用Js,例如:

<p id="demo"></p>

<script>
var d = new Date();
document.getElementById("demo").innerHTML = d;
</script>

这将在用户端运行并获取用户的本地时间

U可以使用Js,例如:

<p id="demo"></p>

<script>
var d = new Date();
document.getElementById("demo").innerHTML = d;
</script>
这将在用户端运行并获取用户的本地时间

第一个解决方案:

使用nuget包

在包管理器控制台中

Install-Package Blazored.Localisation
在Startup.cs中

public void ConfigureServices(IServiceCollection services)
{
    services.AddBlazoredLocalisation(); // This adds the IBrowserDateTimeProvider to the DI container
}
在你看来

@inject Blazored.Localisation.Services.IBrowserDateTimeProvider browserDateTimeProvider
@page "/"

<p>The current local time is: <strong>@currentLocalTime</strong></p>

@code {

    string currentLocalTime = "";

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender) // Remove the firstRender check if you want the current local time displayed to continuously update.
        {   // Leave the above firstRender check in place to ensure that the call to StateHasChanged() does not trigger an endless update loop.
            var browserDateTime = await browserDateTimeProvider.GetInstance();
            currentLocalTime = browserDateTime.Now.ToString();
            StateHasChanged();
        }
    }
}
然后调用视图中的函数

@page "/"
@inject IJSRuntime jsRuntime


...

<p id="demo"></p>

...

@code {
protected async override Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
    // call your JS here
    JSRuntime.InvokeVoidAsync("getClientDate");
    }
 }
}

第一个解决方案:

使用nuget包

在包管理器控制台中

Install-Package Blazored.Localisation
在Startup.cs中

public void ConfigureServices(IServiceCollection services)
{
    services.AddBlazoredLocalisation(); // This adds the IBrowserDateTimeProvider to the DI container
}
在你看来

@inject Blazored.Localisation.Services.IBrowserDateTimeProvider browserDateTimeProvider
@page "/"

<p>The current local time is: <strong>@currentLocalTime</strong></p>

@code {

    string currentLocalTime = "";

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender) // Remove the firstRender check if you want the current local time displayed to continuously update.
        {   // Leave the above firstRender check in place to ensure that the call to StateHasChanged() does not trigger an endless update loop.
            var browserDateTime = await browserDateTimeProvider.GetInstance();
            currentLocalTime = browserDateTime.Now.ToString();
            StateHasChanged();
        }
    }
}
然后调用视图中的函数

@page "/"
@inject IJSRuntime jsRuntime


...

<p id="demo"></p>

...

@code {
protected async override Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
    // call your JS here
    JSRuntime.InvokeVoidAsync("getClientDate");
    }
 }
}


从客户那里获取时区的最好、最可靠的方法是向他们索要。通常你会给你的用户一个个人资料页面,在那里他们可以更新时区、货币和格式。我认为这是一个更稳健的解决方案

从客户那里获取时区的最好、最可靠的方法是向他们索要。通常你会给你的用户一个个人资料页面,在那里他们可以更新时区、货币和格式。我认为这是一个更稳健的解决方案

如果您使用的是Blazor服务器端,那么请查看它是否也适用于webassembly

它允许您通过引入razor组件来转换为本地


如果您使用的是Blazor服务器端,那么请查看它是否也适用于webassembly

它允许您通过引入razor组件来转换为本地


你是说我必须创建一个javascript包装器吗?你是说我必须创建一个javascript包装器吗?我得到编译时错误脚本标记不应该放在组件内,因为它们不能动态更新。要解决此问题,请将脚本标记移动到'index.html'文件或其他静态位置。razor组件中的内联javascript在BlazorI中不起作用。获取编译时错误脚本标记不应放置在组件中,因为它们无法动态更新。若要修复此问题,请将脚本标记移动到'index.html'文件或其他静态位置。razor中的内联javascript组件在BlazoryYou中无法工作您可以查看此nuget软件包:@RahulSharma,它是用于您可以查看此nuget软件包:@RahulSharma,它是用于