Я программирую MFC с Visual Studio 2010 в Центральной Европе.
У меня есть 2 выбора времени, которые я использую, чтобы получить продолжительность двух разных работ
и я получаю в своем коде время, установленное в этих элементах управления, используя переменную CTime.
У меня также есть элемент управления редактирования, который должен отображать сумму двух ранее выбранных сборщиков.
Мой код следующий:
CTime TimeJob1;
CTime TimeJob2;
CTimeSpan CTSTotalJobsTime, CTSJob1, CTSJob2;
m_DTP_Job1. GetTime(TimeJob1);
m_DTP_Job2. GetTime(TimeJob2);
CTSJob1 = TimeJob1 - CTime(0);
CTSJob2 = TimeJob2 - CTime(0);
CTSTotalJobsTime = CTSJob1 + CTSJob2;
CString strTotalJobsTime = CTSTotalJobsTime.Format(_T("%H:%M:%S"));
m_EditTotalJobsTime.SetWindowText(strTotalJobsTime);
Когда я редактирую элемент управления выбора времени и вычисляю сумму двух раз, мне кажется, что у меня смещение составляет 1 час.
Я пытаюсь объяснить лучше.
Если для первого задания задано значение 01:00:00, а для второго — 01:00:00, то сумма времени в элементе управления для редактирования равна 00:00:00.
Если для первого задания задано значение 02:00:00, а для второго — 02:00:00, то сумма времени в элементе управления редактирования будет 01:00:00.
Если для первого задания установлено время 05:00:00, а для второго — 01:00:00, то сумма времени в элементе управления для редактирования равна 04:00:00.
Если я установил продолжительность первого задания на 02:00:00 и второго задания на 04:00:00, сумма времени в элементе управления редактирования будет 01:00:00.
Я полагаю, это проблема из-за разницы между моим системным временем (UTC + 1) и временем UTC времени (0).
Я ошибся? Как я могу решить эту проблему?
Спасибо
РЕДАКТИРОВАТЬ
Я инициализирую свое средство выбора времени в OnInitDialog () следующим образом:
CTime timeTime (1970, 1, 2, 0, 0, 0);
m_DTP_Job1->SetTime(&timeTime);
m_DTP_Job2->SetTime(&timeTime);
ЭТО МОЕ РЕШЕНИЕ:
Я пытался использовать CTimeSpan и элемент управления выбора времени, но я вижу, что они не работают для меня, потому что параметр CTimeSpan — это день, часы, минуты, секунды, в то время как я использую средство выбора даты только для времени (без дней).
Поэтому, когда я устанавливаю часы на 00, благодаря автоматическому преобразованию UTF, мой CTimeSpan меняет день на предыдущий и устанавливает часы на 23.
Итак, я решил удалить средство выбора даты и использовать 3 разных CEdit для часов, минут, секунд.
Других решений пока нет …