Я программирую MFC с Visual Studio 2010 в Центральной Европе.Правильная сумма времени без часовой пояс UTC
У меня есть 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).
Я не прав? Как я могу решить эту проблему?
Благодаря
EDIT Я инициализировать свое время сборщика на OnInitDialog() таким образом:
CTime timeTime (1970, 1, 2, 0, 0, 0);
m_DTP_Job1->SetTime(&timeTime);
m_DTP_Job2->SetTime(&timeTime);
В [документации] (https://msdn.microsoft.com/en-us/library/78zb0ese.aspx#ctime__ctime) указано значение времени «A__ __time64_t», которое представляет собой количество секунд после 1 января 1970 г. UTC. Обратите внимание, что это будет настроено на ваше местное время ». Вы пробовали какой-либо из других конструкторов? –
Чтобы получить текущую системную дату и время по местному времени, используйте функцию GetLocalTime. Не смешивайте системное время с временем UTC. – seccpur