-2

与えられた 2 つの時間の差を計算するプログラムに取り組んでいます。2 つの時間の差は、button1 イベント ハンドラーで計算され、以下に示すウィンドウ フォーム レイアウトに示すようにラベルに表示されます。

これは私のインターフェースです: ここに画像の説明を入力

私のコード:

私の質問が明確であることを願っています。私は最善を尽くしましたが、それを機能させることができませんでした。私は間違った答えを得続けています:

 public Form1()
        {
            InitializeComponent();
        }

        DateTime t1 = new DateTime(0, 11, 0);
        DateTime t2 = new DateTime(0, 16, 30);
        DateTime Dif = new DateTime(0, 0, 0);

        private void button1_Click(object sender, EventArgs e)
        {

            Dif = t1 - t2;
            Dif = Dif + DateTime.Parse(label1.Text);
            label1.Text = Dif.ToString();
        }
4

4 に答える 4

2

顕著な違いを確認するには、2 つの異なる時間に時間を取得する必要があります。さらに 2 つのボタンを追加して、時間を開始し、タイマーを終了することもできます。IMO StopWatch はこの目的により正確です。開始ボタンのクリックで開始し、終了ボタンのクリックで終了します。

ストップウォッチを開始

private void start_Click(object sender, EventArgs e)
{
    stopWatch.Start();
}

ストップウォッチを停止

private void end_Click(object sender, EventArgs e)
{
    stopWatch.Stop();
}

ここで時間間隔を取得します

private void button1_Click(object sender, EventArgs e)
{
     TimeSpan ts = stopWatch.Elapsed;  //Here you will get the time interval         
     if(label1.Text != "")
     {
        TimeSpan tsOld =  TimeSpan.Parse(label1.Text);
        label1.Text = ts.Add(tsOld).ToString(); 
     }
     else
        label1.Text = ts.ToString(); 
}
于 2013-03-12T12:23:18.323 に答える
1

何をしようとしているのかは明確ではありませんが、その値で DateTime を初期化することはできません。

TimeSpan で試す

    TimeSpan t1 = new TimeSpan(0, 11, 0);
    TimeSpan t2 = new TimeSpan(0, 16, 30);
    TimeSpan Dif = (label1.Tag == null ? new TimeSpan(0, 0, 0) : label1.Tag as TimeSpan);

    Dif = Dif + (t2 - t1);

    label1.Text = Dif.ToString();
    label1.Tag = Dif;
于 2013-03-12T12:27:13.220 に答える
0

2つのdateTimeを引くには、timeSpanタイプを使用するだけです。これは私がこのコードをコンパイルしなかった小さな例です:

DateTime TimeDate1 = DateTime.now;
Thread.Sleep(10000);
DateTime TimeDate2 = DateTime.now;
TimeSpan dateTimeResult = TimeDate2 - TimeDate1;

結果は10秒になるはずです

于 2013-03-12T12:33:23.150 に答える
0

私はこれがうまくいくと思います:

 public Form1()
        {
            InitializeComponent();
        }

        TimeSpan t1 = new TimeSpan(0, 11, 0);
        TimeSpan t2 = new TimeSpan(0, 16, 30);

        private void button1_Click(object sender, EventArgs e)
        {
            TimeSpan dif = t2 - t1;
            label1.Text = dif.ToString();
        }
于 2013-03-12T12:28:39.903 に答える