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

Add hours and minutes from textbox values in ASP.Net (c#)

我有多个文本框以 HH:MM 格式保存计算的小时和分钟。 在我页面的底部,我需要一个最终文本框来计算这些小时和分钟的总和,是否应该使用 Timespan 来完成?

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

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

假设这三个时间中的每一个都有 TimeSpan 对象,您可以执行如下操作:

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

或者,如果您没有其他三个时间的 TimeSpan 对象,但只有它们的小时和分钟(很明显,您可以将它们从 String 转换为整数):

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

您可以像这样使用 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);

使用TimeSpan.Parse to parse your strings into TimeSpans, sum all of them and then format them back to HH:MM string using this方法。

如果总小时数加起来超过 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
  }