Точная сумма времени без часового пояса UTC

Я программирую 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);

1

Решение

ЭТО МОЕ РЕШЕНИЕ:

Я пытался использовать CTimeSpan и элемент управления выбора времени, но я вижу, что они не работают для меня, потому что параметр CTimeSpan — это день, часы, минуты, секунды, в то время как я использую средство выбора даты только для времени (без дней).

Поэтому, когда я устанавливаю часы на 00, благодаря автоматическому преобразованию UTF, мой CTimeSpan меняет день на предыдущий и устанавливает часы на 23.

Итак, я решил удалить средство выбора даты и использовать 3 разных CEdit для часов, минут, секунд.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]