Добавить часы и минуты из значений текстового поля в ASP.Net (c #)

У меня есть многостраничные текстовые поля, содержащие рассчитанные часы и минуты в формате ЧЧ: ММ. Внизу страницы мне нужно окончательное текстовое поле, чтобы суммировать эти часы и минуты, нужно ли это делать с помощью Timespan?

Для пояснения (и я знаю, что в приведенном ниже примере я не преобразовывал из строки, это просто для того, чтобы показать, что мне нужно сделать)

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

person DarkW1nter    schedule 20.10.2016    source источник


Ответы (3)


Вы можете использовать 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 для анализа вашего строки в TimeSpans, просуммируйте их все и затем отформатируйте обратно в строку HH: MM, используя этот метод.

person YuvShap    schedule 20.10.2016

Предполагая, что у вас есть объекты TimeSpan для каждого из этих трех случаев, вы можете сделать что-то вроде этого:

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

Или вы можете просто сложить часы и минуты отдельно, если у вас нет объектов TimeSpan трех других времен, но их часы и минуты (как вы, очевидно, делаете, и вы можете преобразовать их из String в Integer):

...
    TimeSpan total = new TimeSpan(0);
    total.Hours=hoursTimeTaken1+hoursTimeTaken2+hoursTimeTaken3
    total.Minutes=minutesTimeTaken1+minutesTimeTaken2+minutesTimeTaken3
...
person Philipp Dietl    schedule 20.10.2016

TimeSpan добавит день, если общее количество часов превышает 24 часа. Это должно решить эту проблему, то есть 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
  }
person JohnG    schedule 20.10.2016