我正在尝试在 blazor 网页中设置实时日期时间。我尝试使用 Datetime.now 。它没有更新实时时间。我想在不使用 javascript 的情况下完成它。
关于这个问题有什么帮助吗?
你需要一个计时器。我能想到的最短的样本:
@page "/"
@using System.Threading
@implements IDisposable
<p>@theTime</p>
@code{
string theTime;
Timer aTimer;
protected override void OnInitialized()
{
aTimer = new Timer(Tick, null, 0, 1000);
}
private void Tick(object _)
{
theTime = DateTime.Now.ToLongTimeString();
InvokeAsync(StateHasChanged);
}
public void Dispose()
{
aTimer?.Dispose();
}
}
类似的,使用“System.Timers”
@page "/digitalclock"
@using System.Timers
@implements IDisposable
<PageTitle>Digital Clock</PageTitle>
<h1>@currentTime</h1>
@code {
private string currentTime = DateTime.Now.ToString("HH:mm:ss tt");
private Timer? secondsTimer;
protected override void OnInitialized()
{
//one second interval
secondsTimer = new Timer(1000);
secondsTimer.Enabled = true;
secondsTimer.AutoReset = true;
secondsTimer.Elapsed += (sender, e) => UpdateTime();
}
private void UpdateTime()
{
currentTime = DateTime.Now.ToString("HH:mm:ss tt");
InvokeAsync(() =>
{
StateHasChanged();
});
}
public void Dispose()
{
secondsTimer?.Dispose();
}
}