从文本框值中添加小时和分钟.Net (c#)

本文关键字:Net 分钟 小时 文本 添加 | 更新日期: 2023-09-27 18:14:04

我有多个文本框保存HH:MM格式的计算小时和分钟。在我的页面底部,我需要一个最后的文本框来合计这些小时和分钟,这应该使用时间跨度吗?

澄清一下(我知道在下面的例子中我没有从字符串转换,这只是为了显示我需要做什么)

txtTotalTime.Text = txtTimeTaken1.Text + txtTimeTaken2.Text + txtTimeTaken3.Text

从文本框值中添加小时和分钟.Net (c#)

你可以这样使用TimeSpan:

TimeSpan timeSpan = TimeSpan.Parse(txtTimeTaken1.Text) + TimeSpan.Parse(txtTimeTaken2.Text) + TimeSpan.Parse(txtTimeTaken3.Text);
txtTotalTime.Text  = string.Format("{0:00}:{1:00}", timeSpan.Hours, timeSpan.Minutes);

使用时间间隔。解析将您的字符串解析为TimeSpans,将它们全部相加,然后使用此方法将它们格式化为HH:MM字符串。

假设这三次您都有TimeSpan-objects,您可以这样做:

...
    TimeSpan total = new TimeSpan(0);
    total.Add(timeTaken1);
    total.Add(timeTaken2);
    total.Add(timeTaken3);
...

或者如果你没有其他三个时间的timespan -object,你可以把小时和分钟分别加起来,但它们的小时和分钟(显然你有,你可以把它们从字符串转换成整数):

...
    TimeSpan total = new TimeSpan(0);
    total.Hours=hoursTimeTaken1+hoursTimeTaken2+hoursTimeTaken3
    total.Minutes=minutesTimeTaken1+minutesTimeTaken2+minutesTimeTaken3
...

如果总小时数超过24小时,TimeSpan将添加一天。这应该解决这个问题,即12小时加13小时

public void AddSpans()
{
  textBox1.Text = "12:31";
  textBox2.Text = "13:40";
  string[] splitArray1 = textBox1.Text.ToString().Split(':');
  string[] splitArray2 = textBox2.Text.ToString().Split(':');
  int hr1, hr2, m1, m2;
  if ((int.TryParse(splitArray1[0], out hr1)) &&
       (int.TryParse(splitArray1[1], out m1)) &&
       (int.TryParse(splitArray2[0], out hr2)) &&
       (int.TryParse(splitArray2[1], out m2)))
  {
    TimeSpan ts1 = new TimeSpan(hr1, m1, 0);
    TimeSpan ts2 = new TimeSpan(hr2, m2, 0);
    TimeSpan ts3 = ts1.Add(ts2);
    int totHrsFromDays = ts3.Days * 24;
    textBox3.Text = (totHrsFromDays + ts3.Hours) + ":" + ts3.Minutes;
  }
  else
  {
    // invalid format HH:MM
  }