如何使用c#在标签上显示系统时间的更新时间?

问题描述:

我想用C#在标签上显示当前时间,但时间会随着系统时间的变化而不断变化。我怎样才能做到这一点?如何使用c#在标签上显示系统时间的更新时间?

新的Timer控件到窗体,称为定时器1,设置间隔添加到1000(毫秒),然后在Timer控件双击编辑代码隐藏Timer1_Tick并添加以下代码:

this.label1.Text = DateTime.Now.ToString(); 
+0

不要忘记以`Timer1.Start()的定时器;` – 2015-02-17 10:04:59

+0

良好的渔获物 - 在设计或设置Enabled属性为True – servermanfail 2015-02-19 13:41:59

添加一个Timer设置为每秒触发一次(1000毫秒)的控件。在该计时器的Tick event中,您可以使用当前时间更新您的标签。

您可以使用像DateTime.Now之类的东西获取当前时间。

您可以添加计时器控制,并将其指定为毫秒的间隔

private void timer1_Tick(object sender, EventArgs e) 
    { 
     lblTime.Text = DateTime.Now.ToString("dd-MMM-yyyy hh:mm:ss tt"); 
    } 

试试下面的代码:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    lblTime.Text = DateTime.Now.ToString("hh:mm:ss"); 
} 

您必须设置定时器也启用,无论是在代码中,还是在属性窗口中。

代码,请键入形式负载部分如下:

myTimer.Enabled = true; 
myTimer.Interval = 1000; 

之后,请确保您的计时器事件与此类似:

private void myTimer_Tick(object sender, EventArgs e) 
{ 
    timeLabel.Text = DateTime.Now.ToString("hh:mm:ss");    
} 
+0

感谢的人...马丽娟 – 2017-02-10 11:14:32

由于计时器间隔不确切地说,你的更新可能会出现不好的同步,并且相对于实际的秒过渡而言会漂移。在某些事件中,您将滞后或过渡之前,并且错过时间显示中的更新。

而不是轮询att高频率以更改秒发射更新此方法可能会授予您一些尊重。

如果您喜欢调节器,您可以通过使用要显示的时间戳的Millisecond属性调整1000 ms定时器,将实时第二次转换后100 ms内的时间更新调整为安全位置。

在定时器事件代码做这样的事情:然后

//Read time 
DateTime time = DateTime.Now; 

//Get current ms offset from prefered readout position 
int diffms = time.Millisecond-100; 

//Set a new timer interval with half the error applied 
timer.Interval = 1000 - diffms/2; 

//Update your time output here.. 

接着定时器间隔应触发接近所选择的点的秒转变之后100毫秒。在转换+ 100ms时,错误将切换+/-以及时保持您的读数位置。

private int hr, min, sec; 

public Form2() 
{ 
    InitializeComponent(); 
    hr = DateTime.UtcNow.Hour; 
    min = DateTime.UtcNow.Minute; 
    sec = DateTime.UtcNow.Second; 
} 

//Time_tick click 
private void timer1_Tick(object sender, EventArgs e) 
{ 
    hr = DateTime.UtcNow.Hour; 
    hr = hr + 5; 
    min = DateTime.UtcNow.Minute; 
    sec = DateTime.UtcNow.Second; 

    if (hr > 12) 
     hr -= 12; 

    if (sec % 2 == 0) 
    { 
     label1.Text = +hr + ":" + min + ":" + sec; 
    } 
    else 
    { 
     label1.Text = hr + ":" + min + ":" + sec; 
    } 
}