web-dev-qa-db-ja.com

C#を使用してラベルに更新時刻をシステム時刻として表示するにはどうすればよいですか?

C#を使用してラベルに現在の時刻を表示したいのですが、システム時刻が変更されると時刻は継続的に変更されます。これどうやってするの?

8
Akshay

Timer1という新しいTimerコントロールをフォームに追加し、間隔を1000(ms)に設定してから、Timerコントロールをダブルクリックして、Timer1_Tickのコードビハインドを編集し、次のコードを追加します。

this.label1.Text = DateTime.Now.ToString();
12
servermanfail

1秒に1回(1000ミリ秒)起動するように設定された Timer コントロールを追加します。そのタイマーの Tick event で、現在の時刻でラベルを更新できます。

DateTime.Now

8
Cody Gray

timerコントロールを追加して、10ミリ秒間隔で指定できます。

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

次のコードを試してください。

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

コードまたはプロパティウィンドウのいずれかで、タイマーを有効にするように設定する必要があります。

コードで、フォームの読み込みセクションに次のように入力してください。

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

その後、タイマーイベントが次のようになっていることを確認してください。

private void myTimer_Tick(object sender, EventArgs e)
{
    timeLabel.Text = DateTime.Now.ToString("hh:mm:ss");            
}
4
mAbdella
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;
    } 
}
0
Ash Bilal

タイマー間隔が正確ではないため、更新が同期していない可能性があり、実際の秒の遷移に対してドリフトします。一部のイベントでは、移行の遅れまたは前に遅れ、時間表示の更新を見逃します

この方法では、高頻度でポーリングして秒の変更時に更新を起動する代わりに、ある程度の敬意を払うことができます。

レギュレーターが好きな場合は、表示するタイムスタンプのミリ秒プロパティを使用して1000ミリ秒のタイマーを調整することにより、実際の2番目の遷移の100ミリ秒後に安全に配置されるように時間更新を調整できます。

タイマーイベントコードで、次のようにします。

//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ミリ秒後に選択したポイントの近くでトリガーされます。 Transition + 100msの場合、エラーは+/-に切り替わり、読み出し位置を時間内に維持します。

0
tofo