我正在研究一个计算两次给定时间之间差异的程序。两次之间的差异是使用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();
}
答案 0 :(得分: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();
}
答案 1 :(得分: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;
答案 2 :(得分: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();
}
答案 3 :(得分:0)
您只需要使用timeSpan类型减去两个dateTime! 这是一个我没有编译此代码的小例子:
DateTime TimeDate1 = DateTime.now;
Thread.Sleep(10000);
DateTime TimeDate2 = DateTime.now;
TimeSpan dateTimeResult = TimeDate2 - TimeDate1;
结果应为10秒