2014-11-25 3 views
1

Прежде всего, я знаю, что есть множество вопросов, таких как мои, но после их анализа я получаю представление о том, что делать, но в конечном итоге продолжаю получать ошибки. Я использую visual studio 2012 и язык C++, чтобы создать форму окна карты времени, как показано ниже. http://i1294.photobucket.com/albums/b618/uRsh3RRaYm0nD/checkin_zpsa4ccebda.jpgПреобразованная строка не в правильном формате

Как вы можете видеть, мне удалось преобразовать и рассчитать значения диапазона datetimepicker в строку, чтобы показать эти значения под текстовым полем «Часы». У меня проблемы с кодировкой кнопки «Получить часы», которая вычитает текстовые поля «Час», чтобы отобразить их в текстовом поле «Всего часов». Я попытался преобразовать эти строковые значения обратно в DateTime, выполнить вычисление, а затем преобразовать результат в строку, чтобы отобразить его.

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { 
     if(this->dtpMondayIn->Value > this->dtpMondayOut->Value) 
    this->dtpMondayIn->Value = this->dtpMondayOut->Value; 
     System::TimeSpan diff = this->dtpMondayOut->Value.Subtract(this->dtpMondayIn->Value); 
     txtMonday->Text = Convert::ToString(diff); 
    } 
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { 
     if(this->dtpLunchIn->Value > this->dtpLunchOut->Value) 
      this->dtpLunchIn->Value = this->dtpLunchOut->Value; 
     System::TimeSpan diff2 = this->dtpLunchOut->Value.Subtract(this->dtpLunchIn->Value); 
     txtLunch->Text = Convert::ToString(diff2); 
    } 
private: System::Void get1_Click(System::Object^ sender, System::EventArgs^ e) { 
      DateTime lunch, work, total; 
      lunch = Convert::ToDateTime(txtLunch->Text); 
      work = Convert::ToDateTime(txtLunch->Text); 
      total = lunch - work; 
      txtTotalHours->Text = Convert::ToString(total); 
//This is where I get the error error C2440: '=' : cannot convert from 'System::TimeSpan' to 'System::DateTime 
+1

Я не вижу здесь C#; и этот код * невозможно * читать. – BradleyDotNET

ответ

0

Используйте TimeSpan для расчета продолжительности. DateTime делает то, что он говорит на жестяной ленте, она представляет собой момент времени.

private: System::Void get1_Click(System::Object^ sender, System::EventArgs^ e) 
{ 
    TimeSpan work, lunch, total; 

    work = this->dtpMondayOut->Value.Subtract(this->dtpMondayIn->Value); 
    lunch = this->dtpLunchOut->Value.Subtract(this->dtpLunchIn->Value); 
    total = lunch - work; 

    txtTotalHours->Text = Convert.ToDecimal(total->TotalHours).ToString("#.00"); 
} 

Edit: Изменен txtTotalHours выход в соответствии десятичную вывод предоставляемого изображения.

Смежные вопросы