我如何更新c# blazor网页中的实时日期时间

问题描述 投票:0回答:2

我正在尝试在 blazor 网页中设置实时日期时间。我尝试使用 Datetime.now 。它没有更新实时时间。我想在不使用 javascript 的情况下完成它。

关于这个问题有什么帮助吗?

c# datetime timer blazor live-update
2个回答
20
投票

你需要一个计时器。我能想到的最短的样本:

@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();
    }
}

1
投票

类似的,使用“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();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.