MaikelO1 Ответов: 2

Расчет временных меток и отдельного времени


Я хотел бы сделать расчет двух временных меток и поля времени, чтобы вычислить часы и минуты активности.

Как я могу решить эту проблему наилучшим образом?

private void BerekenPeriode()
{
    //Start DATETIME dd-MM-yyyy HH:MM:SS
    string theDateStart = dateTimePicker1.Value.ToString("dd-MM-yyyy");
    XX_Starttijd.Text = theDateStart + " " + CMB_TIJD_START_HH.Text + ":" + CMB_TIJD_START_MM.Text + ":00";

    //STOP DATETIME dd-MM-yyyy HH:MM:SS
    string theDateSTOP = dateTimePicker2.Value.ToString("dd-MM-yyyy");
    XX_Stoptijd.Text = theDateSTOP + " " + CMB_TIJD_STOP_HH.Text + ":" + CMB_TIJD_STOP_MM.Text + ":00";

    //Pauze TIME HH:MM
    XX_Pauze.Text = CMB_Pauze_HH.Text + ":" + CMB_Pauze_MM.Text;

    //// Calculation
    //TIMSTAMP STOP (XX_Stoptijd) - TIMSTAMP START (XX_Starttijd) - TIME pauze (XX_Pauze) = HH:MM RESULT???

    LB_DeclarabeleTijd.Text = //RESULT;

}


Что я уже пробовал:

Я признаюсь в пробах онлайн, но не могу. Отчасти потому, что я тоже работаю в области этикеток.

2 Ответов

Рейтинг:
4

Karthik_Mahalingam

попробовать это

DateTime start = DateTime.ParseExact(XX_Starttijd.Text, "dd-MM-yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
          DateTime stop = DateTime.ParseExact(XX_Stoptijd.Text, "dd-MM-yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
          TimeSpan ts = stop - start;
          int hours = int.Parse(CMB_Pauze_HH.Text);
          int minues = int.Parse(CMB_Pauze_MM.Text);
          TimeSpan pauseTime = new TimeSpan(hours, minues, 00);
          var final = ts - pauseTime;
          LB_DeclarabeleTijd.Text = string.Format("{0}:{1}", final.Hours, final.Minutes);


позаботьтесь о проверке, например, часы должны быть 01,10,14 ( 2 цифры ), минуты-01,05,10,25,33 ( 2 цифры )


Karthik_Mahalingam

когда вы анализируете дату из строки, формат должен быть точно таким же, как и строка, которую мы передаем..
Начать датавремя = Датавремя.Метод Parseexact(XX_Starttijd.Текст: "ДД-ММ-гггг чч:мм: СС"...
в приведенной выше строке
ЧЧ - относится к часам, в которые он поворачивается, допустимые данные имеют двузначное целое значение, означает "1" = " 01 " и " 10 " = " 10"
если вы передадите значение как "1 "вместо" 01", то оно вызовет исключение формата..
так что об этой штуке тебе следует позаботиться.

MaikelO1

Я решил ее, реализовав "{0:D2}: {1:D2}"

Я заметил, что при тестировании инструмента не учитывайте даты/дни. : (уитин 24 часа +

Karthik_Mahalingam

хороший.

Рейтинг:
2

Ehsan Skardu

Пожалуйста, попробуйте это

DateTime result =((Convert.ToDateTime(XX_Stoptijd.Text).Subtract(Convert.ToDateTime(XX_Starttijd.Text)).Subtract(Convert.ToDateTime( XX_Pauze.Text))).ToString("H:mm", 
                  CultureInfo.InvariantCulture);


MaikelO1

Я получаю следующую ошибку :(

Смотрите изображения..
http://i66.tinypic.com/33zbwgz.png

Ehsan Skardu

Я улучшил решение, попробуйте это plz.